git-branchless icon indicating copy to clipboard operation
git-branchless copied to clipboard

Enhancements

Open arxanas opened this issue 4 years ago • 2 comments

  • [x] Add link to wiki in help text for executable.
  • [x] Disable warnings:
    • [x] Set advice.detachedHead to false as part of init process.
  • [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.
  • [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 run git 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 like if 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
  • [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 vs de4cdcf3126ad, both addressed by de4cdcf3.)
    • 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.
  • [x] git next and git 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

arxanas avatar Jan 12 '21 00:01 arxanas

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 avatar Jul 18 '22 15:07 lthms

@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.

arxanas avatar Jul 18 '22 22:07 arxanas