Commit Briefs

179f9db092 James Cook

Implement fast-forward merges.

Split part of got_worktree_merge_prepare into a new function, got_worktree_merge_write_refs, since that part doesn't make sense in the fast-forward case. ok stsp@


ea4ee74a61 Omar Polo

regress/cmdline: fix handling of unexpected success

Diff from James Cook, thanks!


6b5246e4d4 Stefan Sperling

make 'got merge -c' fail even if new changes only affect unrelated paths

Otherwise, 'got merge -c' can silently revert already committed changes. Also fix GOT_ERR_MERGE_COMMIT_OUT_OF_DATE by giving it a value distinct from GOT_ERR_MERGE_STAGED_PATHS. Patch by James Cook


427615296b Stefan Sperling

make "got merge" refuse to run if a merge is in progress and the -a or

-c option wasn't passed. Patch by James Cook.


35d2583f83 Stefan Sperling

allow no-op merge commits to be created

Requested by James Cook


af179be739 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@


d51d11be9b Omar Polo

fix 'got merge' so it parses gitconfig for author

cmd_merge is the only subcommand that may create commits that doesn't parse the git config files, thusly failing for users without GOT_AUTHOR defined. Problem reported by James Cook who also provided an initial test case, thanks! ok jamsek


b2b3fce13e 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@


5e91dae4dd Stefan Sperling

remove trailing whitespace; patch by Josiah Frentsos


49c543a6fe 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.


10b394ac1c Thomas Adam

regress: make merge.sh more POSIXy

Don't use '==' for equality matching in sh, as this won't work across all shells. ok @naddy


41f061b2f4 Stefan Sperling

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

ok jrick




0ff8d23662 Stefan Sperling

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@



4e91ef1519 Stefan Sperling

make it possible to merge vendor branches with 'got merge'


5267b9e496 Stefan Sperling

allow bad symlinks to survive a merge

Commands which perform merges will now install bad symlinks as symlinks in the work tree, instead of creating them as regular files. This means bad symlinks committed with 'got commit -S' (or Git) will be preserved. The decision to introduce a bad symlink is done at commit-time and merges should not forcefully reverse this decision. The cherrypick and backout commands require a manual commit step, and a merge result with bad symlinks will require use of 'got commit -S'. Additional testing by thomas adam


1acd48bccb Stefan Sperling

stop caring about obstructed versioned files in 'got merge'

Tyring to write a test to cover this case I found that obstructed files are (correctly) detected as local modifications in the work tree. Thus they trigger the pre-condition check for local modications and 'got merge' will not even start to do any work in the presence of obstructed files.



f259c4c182 Stefan Sperling

add a 'got merge' command for creating merge commits

Additional testing by Thomas Adam. ok tracey