Commits


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@


make 'got rm' behave like rm(1) for paths found missing on disk ok millert@


show commit progress output when 'got merge -c' is used Otherwise no progress output is shown at all with this command. Commit progress output will also display any additional changes which resulted from conflict resolution. ok millert@


add a 'got merge' command for creating merge commits Additional testing by Thomas Adam. ok tracey


indentation fixes


new -I option for 'got status' to show files which match an ignore pattern


ensure that old commits remain referenced after rebase and histedit Create automatic "backup" references which ensure that objects from the pre-rebase or pre-histedit state remain in the repository. A new -l option for 'got rebase' and 'got histedit' lists old commits. This makes it easier to recover from botched rebase or histedit operations. Removal of such objects currently requires got ref -d and git-gc. This will be made more convenient in the future. testing and ok jrick


add per-worktree got.conf(5) file in the .got directory; ok millert


add -s option to 'got remove' which deletes files in a particular status This makes it easy to deal with files that were deleted from disk by external tooling which modified the work tree. Such files are left in missing (!) status and can now be marked for deletion in bulk via 'got rm -s\! -R .' For consistency, modified (M) files can now be removed with 'got rm -s M' which implies 'got rm -f'. Prompted by feedback from krw@


Add a 'got info' command which displays work tree meta-data. Remove the alias 'got in' for 'got init'. The 'in' alias was too close to either 'init' or 'info'. ok tracey, millert


forbid bad symlinks; add -S option to 'got commit' and 'got stage' to allow them


make 'got update' skip conflicted files ok millert@


make 'got checkout' and 'got update' work with read-only repositories but warn users about the garbage collection problem


add -k option to 'got remove' to keep files on disk ok stsp


address some of the file descriptor vs. path races in status callbacks


add -R option to 'got remove' for recursive deletion ok stsp


Introduce -I to cmd_add to disregard ignores when adding recursively. Expand add.sh tests. Update TODO.


add -R option to 'got add' for recursive addition (patch by Tracey Emery)


teach 'got commit' to tweak the executable bit of a file


add 'got integrate' command


indicate non-existent paths in 'got status' and make 'got diff' error for them


untie cancel callback declaration from the work tree


implement 'revert -p'


implement 'got unstage -p'


make stage -p show the number of changes in a file