git-branchless
git-branchless copied to clipboard
Enhancements
- [x] Add link to wiki in help text for executable.
- [x] Disable warnings:
- [x] Set
advice.detachedHead
tofalse
as part ofinit
process.
- [x] Set
- [x]
git undo
: create transactions as part of events (rewrite, hide/unhide multiple, undo), and default to undoing an entire transaction at once. Allow toggling to non-transactional mode. - [x]
git restack
should rebase entire branches at once, rather than individual commits at a time.- Extracted to #34.
- [ ] Auto-restack feature, to automatically run
git restack
whenever an operation abandons commits.- In particular, we probably only want to carry out the
git restack
if it would succeed. If it has merge conflicts, then we should just warn the user and have them fix it. - Partially addressed by https://github.com/arxanas/git-branchless/pull/142.
- In particular, we probably only want to carry out the
- [x] Auto-echo setting, to configure which commands automatically run
git smartlog
afterwards.- More or less accomplished by #182.
- [x]
git gc
should show the number of garbage collected nodes.- Implemented in #144.
- [x] The
post-commit
hook should show the commit OID and message. - [x] It may or may not be desirable for navigation commands (
git next
/git prev
) to, when checking out to a commit, if it has exactly one branch associated with it, also check out that branch.- This workflow can be achieved by #192.
- [x] After
git smartlog
, if there are abandoned commits, suggest a hint to rungit restack
to fix them up. - [x] Some kind of word-wrapping or truncation may be desirable for long commit messages, especially in narrow terminals.
- [x] Improve performance of
git sl
after rebase. In large repos, it can take several seconds to compute.- This could probably be done using the
post-update
hook. There should be something about the lattice merge-base structure which we can exploit to quickly calculate new merge-bases for all the visible commits, something likeif mb(local, main) = x and mb(main, main') = x then mb(local, main') = x
(but there are some edge-cases due to the fact that nodes can have multiple parents). - Alternatively, we can use the merge-base machinery in https://github.com/quark-zju/gitrevset
- This could probably be done using the
- [x] When a local branch tracks a remote branch, use the remote branch as the main branch. This way, the progress made on the local branch becomes visible by default in the smartlog.
- Addressed in https://github.com/arxanas/git-branchless/pull/124.
- [x] Support GPG-signing commits (
git-revise
does this)- Extracted to https://github.com/arxanas/git-branchless/issues/465.
- [x] Better handling of shorthand commit collisions
- Currently,
git-branchless
panics if you provide an ambiguous commit hash. (Example:de4cdcf365518
vsde4cdcf3126ad
, both addressed byde4cdcf3
.) - Preemptively check to see if a commit hash is ambiguous when rendering the smartlog? Prompt to resolve ambiguity? Assume that the object has to be of a certain type according to the operation (usually, it has to be a commit)? Maybe use this function https://docs.rs/git2/0.13.22/git2/struct.Object.html#method.short_id?
- Implemented in https://github.com/arxanas/git-branchless/pull/306.
- Currently,
- [x]
git next
andgit prev
should be able to move forward by a number of branches, not just by a number of commits.- See also https://github.com/epage/git-stack/issues/27
- See also https://docs.graphite.dev/guides/graphite-cli/navigating-a-stack#moving-up-and-down-a-stack
- Implemented in #192.
- [ ]
scm-record
features:- [ ] Shortcuts to go to top/bottom
- [ ] Expand/collapse regions
- [ ] Invert all items/some selection
- [ ] Search and jump to a region
- [ ] Filter shown items by search term
- [ ] Batch/group selection
- [ ] Multiple split groups, not just two
- [ ] Menu bar for command discoverability
- [ ] Minimap overview
If I could help with GPG support, this is actually a blocker for me to adopt the tool, and I’d be interested in giving a hand
(Interestingly enough, this was also a blocker for me trying and using Stacked Git, and this was my first contribution too)
@lthms I created https://github.com/arxanas/git-branchless/issues/465 for GPG-signing commits. You can comment there or join the Discord channel and I can answer any questions you might have.