Commit Briefs
move got_patch file status checking in worktree.c
check_file_status used got_worktree_status to check if the file was in an allowed state, but it's wrong since the callback is not invoked on unchanged files. While here also fix a relate bug: unlink(newpath) is in the wrong spot and ends up removing files even when it shouldn't, so move it early in the got_worktree_schedule_* error handling. Finally, update the appropriate test case. It was passing before because got_worktree_schedule_add returned GOT_ERR_FILE_STATUS, not because check_file_status failed. ok stsp@
const-ify tables
ok thomas_adam millert
augment patch progress callback with hunks info; recover from errors
Augment got_patch_progress_cb by providing the hunks that were applied with offset (or that failed) and the recoverable error encountered during the operation (bad status, missing file, ...) got_patch now proceeds when a file fails to be patched and exits with GOT_ERR_PATCH_FAILED if no other errors are encountered. While here, also add a test for the 'hunk applied with offset' case and shrink test_patch_dont_apply and illegal_status by taking advantage that 'got patch' doesn't stop at the first error. (And add some other cases to illegal_status too.) discussed with and ok stsp@
introduce got_patch_progress_cb
This introduce a proper got_patch specific progress callback that is invoked after processing a patch. It also drops the hackish printf in the modified case and takes `nop' out of the struct got_patch. ok stsp
don't `goto done' if calloc fails
otherwise we call got_repo_close with repo being NULL and segfault there. ok stsp
cache a list of known pack index files when the repository is opened
Avoids overhead due to readdir calls while searching a pack index. ok op@
add a dry-run/nop mode for got patch
with lots of help from stsp for the manpage bits!
check file status before applying the patch
Don't allow `got patch' to delete files that are not known, or add files that are already known and to edit files that are known, not obstructed and without conflicts.
refactor apply_patch to support renaming files
add two helper functions (schedule_add, schedule_del) and move the guts of apply_patch into a new function `patch_file'. This simplifies apply_patch and makes easier to figure out what happens. Then, drop GOT_ERR_PATCH_PATHS_DIFFER since we allow the to rename files.
save `pos' in locate_hunk instead of calling ftello again
ok thomas, stsp
add a dry-run/nop mode for got patch
with lots of help from stsp for the manpage bits!
improve `got patch' section of the manpage
Simplify some phrasing, explain what preconditions `got patch' has and what happens to the work tree when an error occurs.
check file status before applying the patch
Don't allow `got patch' to delete files that are not known, or add files that are already known and to edit files that are known, not obstructed and without conflicts.