Commit Briefs
special case 'got fetch -b <branch>' to only fetch <branch>
As discussed on irc, this drops the implicit remote HEAD fetch when -b is used. got.1 has been updated to make the new fetch behaviour clear. ok stsp@
garbage-collect redundant read_logmsg() parameter
As identified and suggested by stsp, with the previous commit, 'strip_comments' is now always set thus no longer needed. ok stsp@
got: use timestamp and emptiness to validate log message
As suggested by naddy: consider commit log messages valid provided the temp file time stamp has changed and the file is not empty. This heuristic provides the desired behaviour (i.e., reusing cherrypicked/backed-out log messages) that's currently provided but is simpler to grok. Improved by and ok stsp@
make edits made to comments count as a log message modification
This supports use of cherrypick/backout without requiring the user to modify the log message of the original commit. ok jamsek, op
fix interaction of 'got fetch -b', got.conf, and work tree
Without branches in got.conf for a remote, and without -b/-R options, the fallback to HEAD would only work when not invoked in a work tree. With this fix 'got fetch' should behave as described in the man page. The -b option now overrides both got.conf and the fallback to the work tree's branch. And fallback to HEAD works as expected when invoked in a repository. Also, do not strictly require remote repositories to provide a branch from the refs/heads/ namespace. In such cases users should be able to use -R to select something to fetch. ok jamsek
improve 'got fetch' behaviour when work tree's branch is not on server
Only fetch the work tree's branch if the -b option is not specified. This keeps -b functional as an override when invoked in a work tree. Our previous changes did not consider that got.conf is also a source of lists of branches to fetch, and that -b is supposed to work as an override of any default behaviour. We were implicitly appending the work tree's branch as if it was mentioned as an override on the command line, which was wrong and based on a misunderstanding of the intended behaviour. Without -b on the command line we obtain a list of branches to fetch from got.conf and use this list if it is not empty. The repository's HEAD will be fetched only if neither the -b option, nor got.conf, nor a work tree tell us what to fetch. Make the man page more clear by moving the explanation of the default behaviour into the main section of 'got fetch', leaving the -a and -b option descriptions free of such details. ok jamsek
fix mistaken instances returning NULL instead of err
While here, for consistency, check dup() return value for -1 rather than < 0. ok stsp@
got: make fetch default to the work tree's current branch
As per stsp's todo item, if invoked in a work tree, make 'got fetch' default to fetching the work tree's current branch instead of the branch pointed to by the remote repository's HEAD. ok stsp@ and op@
make 'got rebase' work when the to-be-rebased branch has no parent commit
found by and ok op@, who also provided the test case
show worktree UUID in backout/cherrypick -l output
When run from the repository, display the UUID to help the user know which logmsg refs belong to which work tree. Also, use "backout" or "cherrypick" in the log message header to distinguish output from 'got log'. Suggested by stsp on irc. ok stsp@