Commit Briefs
replace date, strftime %G-%m-%d with %F
Use the more predictable %F, aka %Y-%m-%d, instead of %G-%m-%d. %G follows the definition of ISO-8601 week-based year, which is weird. In particular, 2024 is one of such years with weird behaviour: $ date -jf %Y-%m-%d +"%F %G-%m-%d" 2024-12-30 2024-12-30 2025-12-30 Diff from Lucas Gabriel Vuotto (thanks!); stsp agrees
require -R option for staging or unstaging directory contents
-R is needed on almost all other commands so this makes things consistent. Patch by Lorenz (xha)
Add initial read-only http fetch support using a got-http helper.
Currently we only support the smart protocol with a limited feature set. ok stsp@ tobhe@
make 'got status' display interrupted rebase, histedit, and merge operations
When an operation is interrupted add a trailing message to status output which displays the operation and branches involved. This information will be useful when diagnosing problem reports and it helps new users with contextualizing multi-operation work tree state. ok op@
forgot to unveil the log message file passed to got commit -F
found by op's regress builder
call unveil earlier in 'got tag'
We now know that unveil(2) will never traverse exec. No need to wait with unveil until the editor has been run. ok op@
call unveil earlier in 'got histedit'
We now know that unveil(2) will never traverse exec. No need to wait with unveil until the editor has been run. ok op@
call unveil earlier in 'got commit'
We now know that unveil(2) will never traverse exec. No need to wait with unveil until the editor has been run. ok op@
call unveil earlier in 'got import'
We now know that unveil(2) will never traverse exec. No need to wait with unveil until the editor has been run. ok op@
rename got_commit_graph_iter_start() to got_commit_graph_bfsort()
This function begins a breadth-first traversal. The new name makes it easier to distinguish from got_commit_graph_toposort().
make 'got rebase' find a merge base with topological sorting if needed
Fixes a problematic case of spurious conflicts encountered by naddy@ on landry's firefox package git repository. The current implementation of toposort is expensive, so this might make rebase appear to run slowly on large repositories. However, this is better than letting users deal with spurious conflicts. ok op@
add log -t option which enables topological sorting of commits
Because the current implementation of toposort is expensive, add a flag which enables it. I would rather not have this option and just use toposort by default, however more work is required to achieve acceptable performance. ok op@
use a define for vi(1) path
This is intended to aid -portable, since other systems may have vi installed in a different place, or maybe prefer to ship with a different default editor. ok stsp@
simplify usage of the 'mesg' histedit script command
The 'mesg' script command now requires a commit ID as its argument, rather than being tied to a preceding 'pick' or 'edit' command. The old model was too confusing for new users, in particular for people used to Git's rebase -i squash semantics. The 'mesg' command is now semantically equivalent to the 'pick' command and additionally opens the log message in an editor. The new syntax is simpler to use but also requires that we drop support for one-line log messages inside the histedit script, with a commit ID taking its place in the argument space. We don't believe this feature was used much, and that a simplified usage model is more beneficial overall. Patch by Lorenz (xha) ok jamsek
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.
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@
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@
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@
got: allow 'got log -x' to accept keywords
Suggested by Lucas on IRC. ok stsp@ and op@