Commit Briefs

Thomas Adam

copy remote repo info out of work tree data before closing the work tree

Fixes a crash regression introduced when fetch/send were made to close the work tree earlier.


Thomas Adam

make 'got fetch' and 'got send' release the work tree lock earlier

This avoids having work tree operations blocked while network transfers are in progress. ok op@


Thomas Adam

prevent overlapping repo and work tree in 'got checkout'

Some people are eager to try to make Got work just like Git by overlaying the repository and work tree. This causes problems with unveil conflicts at run-time. Fail as early as possible during 'got checkout' when users attempt this. cosmetic tweaks + ok op@


Thomas Adam

fix 'got log -dPp' diffstat duplication bug

Only collect changed paths once if both -d and -P are specified; we already checked for -d and -p. Reported by Lucas on IRC. Regress for this and the previous (got log -x keyword) commit still due. ok stsp@ and op@


Thomas Adam

got: allow 'got log -x' to accept keywords

Suggested by Lucas on IRC. ok stsp@ and op@




Thomas Adam

plug got_reference leak in cmd_update()

ok op@


Thomas Adam

got: improve reporting accuracy in branch listing output

As suggested by stsp, show the out-of-date symbol for the work tree branch if it is not only out of date in relation to the branch tip but also if it contains mixed commits. Update regress and add new test to check for this case. Also, explain the mixed commit condition of * and ~ markers denoting work tree state in got(1) branch -l docs. ok stsp@


Thomas Adam

use a separate .cvg meta data directory for cvg(1) work trees

This prevents mixing the use of got and cvg clients in the same work tree. Avoids confusion going forward while cvg differentiates itself further. tog(1) and gotadmin(1) remain compatible with both work tree formats. These tools only read work trees to locate the corresponding repository.


Thomas Adam

got: enable more commands to accept commit keywords

More work adding commit keyword support to the blame, cat, ref, tag, and tree commands. With this, all Got commands that take a <commit> option argument or operand now support keywords. Regress flub saved by op! fixes + ok op@


Thomas Adam

expand support for commit keywords to more got commands

Add the ability to use keywords in the backout, branch, checkout, cherrypick, and patch commands. Includes some basic regress tests for the new commands, and also some more contrived test cases for 'got log -c[:]keyword[:(+|-)[N]]'. ok stsp


Thomas Adam

implement support for keywords as got <commit> arguments

This begins enabling the use of keywords in got wherever commit ids or references are used, with more work intended to expand support across all such instances (e.g., branch, checkout, etc.), and add more keywords. The keywords ":base" and ":head" can be passed to 'got {diff,log,update} -c' commands as a substitute for the corresponding commit hash id. Keywords and references can also be modified by appending a ':+' or ':-' and an optional integer N to specify by first parent traversal the Nth generation descendant or antecedent, respectively. If N is omitted, a '1' is implicitly appended. tweaks + ok op and stsp


Thomas Adam

abort histedit if the user quits the editor without saving the script

Also document that the commit/import/tag operations are aborted when the user fails to save the log message from the invoked editor. ok jamsek stsp


Thomas Adam

always report stat() error with path

ok stsp


Thomas Adam

plug got_object_id leak in cmd_log()

ok stsp@


Thomas Adam

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.


Thomas Adam

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

ok stsp@


Thomas Adam

reword user-facing error message which mentions "fast-forward"

For user-facing messages it is better to avoid technical jargon like this and instead spell out what the fast-forward situation implies: that one branch is already based on another. ok jamsek



Thomas Adam

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@


Thomas Adam

make 'got tree /' succeed in a work tree

Previously, this command would trigger an error: got: /: bad path


Thomas Adam

dropping unnecessary strlen()s

ok jamsek, stsp


Thomas Adam

avoid strlen in for(;;)

ok jamsek, stsp


Thomas Adam

got, tog: correctly skip HEAD in build_refs_str()

s[strlen(s)] == '\0' is banally always true, the intent was to not skip refs that starts with "HEAD". style nit / ok stsp@