Commits


switch branches during noop rebases Always update to the specified branch even if the branch is already rebased (no commits needed to be rebased, and the branch does not need a fast forward). With the old behavior of erroring and staying on the current branch, I sometimes found myself ignoring the error message, treating it as information and assuming the branch update, and later on committing on top of origin/main instead of the main branch. feedback and ok stsp


regress: use gdate/gln if on *BSD To minimise the amount of churn between the difference in date(1) and ln(n) semantics, use gdate and gln from coreutils.


ignore unversioned files while aborting rebase, histedit, merge or operations ok jrick


interrupt 'got rebase' upon missing/unversioned/not-deleted files


print additional stats about things that went wrong during a merge


regress: fix test failures using date(1) This patch fixes test failures related the date(1) utility. In the long term we could add a wrapper function to detect valid options for date(1) and use the variant which works on the current OS. For now, this makes some tests pass and shows us where the problems are. OK thomas.adam


use the POSIX-compliant "date -u" command to return UTC time; ok stsp


add missing "return 1" to failure handling in the regress scripts ok stsp@


make 'got ref -d' print reference name and value like the new -X options do


new -X option for removing backups created by got rebase and got histedit ok semarie


fix unrelated changes being merged by got cherrypick/backout/rebase/histedit This was a long-standing and very annoying bug. The two xfail tests in the cherrypick test suite are passing now.


rebase/histedit -l: error out if no backups for the requested branch exist


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


simplify the error message shown when 'got rebase' has nothing to do


use POSIX [s1 = s2] syntax instead of [s1 == s2]; patch by Ryo ONODERA


implicitly mark all files in work tree as up-to-date after rebase/histedit This should always be correct, since rebase and histedit start out with a clean and single-base-commit worktree, and end up committing all changes across the entire work tree when they are successful. tested by jrick and myself


switch function declarations from Korn shell to Bourne/POSIX shell syntax ok stsp


add a -q option to tests for quiet output and use it for 'make regress' Previous default output remains when test cases are run individually. ok tracey


add a test for rebase file index corruption problem fix in previous commit ok tracey


show a summary of conflicts and related problems after updating/merging files ok millert@


use 'got commit' in test_rebase_delete_missing_file instead of Git


add a test for 'got rebase' to check behaviour on delete vs. delete


add -c option to 'got ref' which now expects just one argument after options


show merged commit ID + logmsg upon merge conflict during rebase and histedit This makes it more apparent which commit contained the conflicting change. The new output looks like this: C sys/dev/pci/if_iwm.c 8a98d848a1a5 -> merge conflict: properly modify station queues got: conflicts must be resolved before rebasing can continue


let 'got branch' switch and update the work tree ok tracey