Commit Briefs




James Cook

fix option processing for 'got merge'

Don't make -C imply -c (a break statement was missing). Detect -an and -cn conflicts. Simplify by removing unneeded check for conflicting -aC (since -C requires -c, we can rely on the -ac conflict being detected). Update the man page to say -cC is allowed.


James Cook

add -M option: tell got merge not to fast-forward

ok stsp@


Mark Jamsek

typo





Stefan Sperling

prevent 'got merge' from creating commits on branches outside of "refs/heads/"

ok op, james


Stefan Sperling

make 'got add' more forgiving about unversioned paths on the command line

When users run 'got add *' the shell may pick up already versioned files and trigger errors about paths being in an unexpected status. Expand the check which previously only allowed files in added status to be double-added to cover the following status codes which are all safe to ignore: A M C m This should make bulk additions of files a bit easier in most cases. Problem reported by robert@ ok jamsek


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@



Stefan Sperling

allow no-op merge commits to be created

Requested by James Cook


Stefan Sperling

handle files changing into directories during 'got update'

problem found by naddy@




Stefan Sperling

in got.1, clarify what users are expected to do during 'histedit -e'

Gap in the documentation pointed out by James Cook.


Stefan Sperling

fall back to vi(1) instead of ed(1) if neither EDITOR nor VISUAL are set

ed users are reading files with their minds rather then their eyes, and might therefore be missing important visual clues we write into files before the user gets to edit them. Use of vi(1) ensures that such clues will not be missed.


Stefan Sperling

have ignore patterns with trailing slashes match directories only

ok jamsek


Mark Jamsek

add ci/he/mg/rb -C option to commit unresolved conflicts

As per stsp's suggestion and building on his initial diff, add the -C option to enable creating commits with unresolved conflicts to the commit, histedit, merge, and rebase commands to allow continuing the operation despite files in conflict status. Also, only search for conflict markers in newly added lines to enable working with files already under version control that may have conflict markers embedded verbatim. lots of tweaks, improvements, and initial diff + ok stsp@


Mark Jamsek

got: further fetch tweaks to prevent unintended fetches

Implement stsp's suggestion to only fetch remote's HEAD if the symref refs/remote/*/HEAD exists, and its target no longer matches the remote HEAD. This ensures users tracking a project won't miss a change in HEAD, while also fixing the issue reported by naddy where HEAD was fetched by default even though a specific, potentially less active, branch is cloned, resulting in a repository with more commits than necessary. In addition, unless 'got fetch -b <branch>' is used, the remote HEAD branch will be fetched if branches are not set in got.conf and there is no work tree to ascertain a branch, or said branches are not found on the server. ok stsp@


Stefan Sperling

backout got: always fetch remote HEAD except when -b is used

As pointed out by naddy, this behaviour is not ideal when users want to limit their repository to a particular branch which will diverge from HEAD over time, such as -stable branches. See https://marc.gameoftrees.org/mail/1676388048.8632_0.html


Mark Jamsek

got: always fetch remote HEAD except when -b is used

Rather than only fetch HEAD when there are no branches set in got.conf and there is no branch to be inferred from a work tree, or said branches don't exist on the server, always fetch HEAD unless 'got fetch -b branch' is used. ok stsp@