Commits


handle files changing into directories during 'got update' problem found by naddy@


got.1: list all options which can be used to generate a histedit script


Apply 'histedit -e' wording tweak from James Cook, thanks!


in got.1, clarify what users are expected to do during 'histedit -e' Gap in the documentation pointed out by James Cook.


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.


have ignore patterns with trailing slashes match directories only ok 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@


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@


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


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@


got.1: tweak commit -A description. ok jamsek


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@


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


make 'got import' -I option match directory names with a trailing slash reported by Lucas on IRC, who sent a patch which this commit was based on 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 missed doc update of new 'got fetch' behaviour 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@


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.1: editing merged log messages is no longer optional, tweak related wording


got.1: Mark the commit argument to cherrypick and backout optional patch by Josiah Frentsos


clarify documentation of cherrypick/backout log message recording ok jamsek


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@


sort ENVIRONMENT entries in got.1 and tog.1 ok jamsek


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@