Commits


only fetch the work tree's branch by default if it is inside "refs/heads/" ok jamsek


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@


zap unused parameter in got_worktree_rebase_complete() ok stsp@


return err instead of NULL in got.c:print_backup_ref() ok stsp@


free cwd in cmd_backout() and cmd_cherrypick() ok stsp@


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@


add missed option conflict check for histedit -e and -f Reviewed as part of previous commit adding histedit -d. ok stsp@


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@


got: don't leave tmp "got-logmsg-*" files in the work tree Reported by stsp on irc, and reviewed as part of the following regress commit covering the commit aspect of logmsg refs. Delete temp merge_log files if created during commits involving backed-out/cherrypicked changes. ok stsp@


abort commit with merged log messages if the log message is left unmodified ok op@


avoid creation of temporary file if no merged log messages will be used


rename a variable for clarity


uppercase cherrypick/backout -X progress output ok jamsek


improve heuristics for prepopulated log messages Small tweak to cover the case where users specify paths to be committed such that none of the paths modified by a backout or cherrypick operation are in the commit. In this case, the logmsg ref will remain in refs/got/worktree to be used when the user does run a commit involving the affected paths. ok stsp@


fix invalid assumption in commit_path_changed_in_worktree() Make sure we have a parent id first to avoid dereferencing a NULL pointer with the got_object_open_as_commit() call. ok op@ and stsp@


got: load editor with backout/cherrypick commit log messages Create new logmsg references used to populate the editor with the log messages of backed-out and cherrypicked commits when 'got commit' is run. We use versioned path state heuristics during revert and commit commands in an effort to ensure the editor is only populated with the log messages of backed-out and/or cherrypicked commits involving paths with local changes that are being committed. This is an implementation of an initial idea and algorithm designed by stsp. inputs, improvments and ok stsp@


cmd_tag: avoid unnecessary strdup of signer_id ok jrick


got merge: call the right usage_*() function Diff from Mikhail, thanks!


got: don't leak pathlist in commit and revert commands ok stsp@


refactor got log -d and tog diffstat to compute diff once This eliminates the previous performance cost by making 'got log -d' and tog diff view compute the diffstat while building the diff in a temp file like we do with 'got diff -d'. Also, keep the current 'got log -d' UI as per stsp's suggestion. ok stsp@


don't use plural noun after 1 in diffstat total Use singular form when appropriate; for example, turn the top into the bottom: 1 file changed, 1 insertions(+), 1 deletions(-) 1 file changed, 1 insertion(+), 1 deletion(-) ok op@