v0.3.5
To install or update git-branchless
, run the following:
$ cargo install git-branchless
$ git branchless init # in your repository
Release highlights
git move
is ready for general use. Try it out as a lightning-fast replacement forgit rebase
:git move -s <commit>
: movecommit
and its descendants onto the current commit.git move -d main
: rebase the current commit stack on top ofmain
.git move -b <commit1> -d <commit2>
: move the stack containingcommit1
ontocommit2
.- It doesn't yet replace
git rebase -i
. Stay tuned for a future release. - It can rebase merge commits, similar to
git rebase --rebase-merges
. If this is part of your workflow, tell me about it in the linked discussion for this release.
git restack
now tries to rebase in-memory before falling back to an on-disk rebase. This should speed it up noticeably in most cases.- Performance of
git smartlog
has been improved on large repositories by switching to the Eden SCM's directed acyclic graph implementation. You can expect further performance improvements as I port more of the code to use Eden. Thanks to @quark-zju for answering my questions to help me integrate it.
Changelog
Added
- Merge commits can be rebased by
git move --on-disk
. This uses the same system asgit rebase --rebase-merges
.
Changed
- (#63) The UI for
git undo
has been changed in various ways. Thanks to @chapati23 for their feedback. You can leave your own feedback here: https://github.com/arxanas/git-branchless/discussions - Merge-base calculation is now performed using EdenSCM's directed acyclic graph crate (
esl01-dag
), which significantly improves performance on large repositories. - Subprocess command output is now dimmed and printed above a progress meter, to make it easier to visually filter out important
git-branchless
status messages from unimportantgit
machinery output. git move
tries to avoid issuing a superfluousgit checkout
operation if you're already at the target commit/branch.git restack
uses in-memory rebases by default.
Fixed
git restack
warns if a sub-command fails (e.g. ifgit rebase
fails with merge conflicts that need to be resolved).- (#57)
git undo
shows an informative link when dealing with empty events, rather than warning about a bug. Thanks to @waych for reporting. - Flickering in
git undo
's rendering has been reduced. - Commits made via
git merge
are now recorded in the event log. - Long progress messages are now truncated on narrow screens.
- In-memory rebases on large repositories are now up to 500x faster.
git smartlog
no longer crashes after you've just rungit checkout --orphan <branch>
.- In-memory diffs on large repositories (used for commit deduplication) are now up to 100x faster.
- Invocations of
git-branchless
commands which called subprocesses and then exited quickly no longer fail to print the subprocess output.