Commit Briefs

Stefan Sperling

when aborting rebase/histedit/merge, unlink files added by merged changes

Otherwise we leave unversioned files behind in the work tree which may interfere with new attempts to rebase or merge the changes again. Problem found by + ok naddy@



Stefan Sperling

support histedit fold operations which delete a file and then add it again

problem found by naddy@ ok op@


Christian Weisgerber

add xfail test for histedit folding of delete followed by add

If a file is deleted, then in modified form added again, folding should restore the file with its new contents. ok stsp


Christian Weisgerber

regress: replace "sed -i" with ed(1) for portable in-place editing

"sed -i" is fundamentally unportable. GNU and OpenBSD sed(1) treat the extension for the backup file as an optional argument and use "sed -i" for no backup file. FreeBSD sed(1) treats the extension as an obligatory argument and uses "sed -i ''" for no backup file. There is no single syntax that works for both. ok stsp op


Mark Jamsek

got: add 'got histedit -d' flag to drop all commits

Like -f, except drop all commits. Discussed with op and stsp on irc. ok stsp@


Stefan Sperling

use VISUAL instead of EDITOR in histedit_mesg_filemode_change

VISUAL is preferred and relying on EDITOR may cause test failures in some environments. pointed out by op and jamsek



Stefan Sperling

fix histedit -m on a commit which only changes filemode bits

The commit was being miscategorized as a no-op change and dropped. Now the commit is retained and its log message is updated as expected. ok op, jamsek


Omar Polo

regress: consistently use ed -s

didn't know about -s when writing those tests; saves some output redirection. ok jamsek


Omar Polo

respect umask when creating or changing files and directories

This behaviour is already documented in got-worktree(5) but wasn't actually implemented. ok stsp@


Stefan Sperling

reset committer during rebase and histedit

ok op@



Omar Polo

histedit: make sure mesg is only used after pick or edit

It doesn't really make sense to use mesg after a fold or drop, or after another mesg. it currently "works" as intended, but the behaviour is confusing and not useful, better abort the operation as it's probably not what the user intended. Suggested by and ok stsp@


Christian Weisgerber

use test(1) -eq and -ne to compare integers, and reduce quoting

This brings the rest of the regression test scripts in line with patch.sh.



Stefan Sperling

add test for merge result when lines are inserted at the top of a file

Based on a patch by Omar Polo




Stefan Sperling

fix histedit_no_op test which was failing randomly

A no-op replayed history ends up having exactly the same commit IDs if all commits are created at roughly the same moment in time. There are no content changes involved so if commit timestamps do not differ then commit hashes will be the same. In which case there is no fork in history for 'got histedit -l' to display, yet the test was always expecting a fork in history to be displayed. Update the test to take this issue into account. The test will now pass no matter which result is produced by the histedit operation. Problem found by Lucas who observed that this test was randomly failing. Patch also provided by Lucas.




Christian Weisgerber

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

ok stsp@


Stefan Sperling

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

ok semarie


Stefan Sperling

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