#commit #ui #git #component #hg #interactive #control

bin+lib scm-record

UI component to interactively select changes to include in a commit

3 releases (breaking)

new 0.3.0 May 26, 2024
0.2.0 Dec 25, 2023
0.1.0 Aug 19, 2023

#157 in GUI

Download history 2166/week @ 2024-02-04 1881/week @ 2024-02-11 1355/week @ 2024-02-18 1374/week @ 2024-02-25 1502/week @ 2024-03-03 1397/week @ 2024-03-10 1180/week @ 2024-03-17 1335/week @ 2024-03-24 2304/week @ 2024-03-31 1210/week @ 2024-04-07 1501/week @ 2024-04-14 937/week @ 2024-04-21 1234/week @ 2024-04-28 1339/week @ 2024-05-05 2031/week @ 2024-05-12 1716/week @ 2024-05-19

6,378 downloads per month
Used in 17 crates (5 directly)

MIT/Apache

235KB
6K SLoC

License

MIT OR Apache-2.0

scm-record

scm-record is a UI component to interactively select changes to include in a commit. It's meant to be embedded in source control tooling.

You can think of this as an interactive replacement for git add -p, or a reimplementation of hg crecord/hg commit -i. Given a set of changes made by the user, this component presents them to the user and lets them select which of those changes should be staged for commit.

scm-record was originally developed as a supporting library for git-branchless.

scm-diff-editor

The scm-diff-editor binary is available when compiled with --features scm-diff-editor.

This is a standalone binary that uses the scm-record library as a front-end, and can be integrated directly into some source control systems:

Integration with other projects

Here's some projects that don't use scm-record, but could benefit from integration with it (with your contribution):

Feature wishlist

Here are some features in the UI which are not yet implemented:

  • Make the keybindings easier to discover, allow accessing the menu with the keyboard.
  • Jump to next/previous element of same kind.
  • Edit one side of the diff in an editor.
  • Multi-way split UI to split a commit into more than 2 commits.
  • Support for use as a mergetool.
  • Commands to select ours/theirs for diffs representing merge conflicts.

Dependencies

~6–15MB
~176K SLoC