#diff #editor #scm-diff-editor

bin+lib scm-diff-editor

UI component to interactively select changes to include in a commit

2 unstable releases

0.8.0 Mar 15, 2025
0.4.0 Oct 9, 2024

#90 in #diff

Download history 46/week @ 2025-01-15 69/week @ 2025-01-22 70/week @ 2025-01-29 116/week @ 2025-02-05 88/week @ 2025-02-12 174/week @ 2025-02-19 111/week @ 2025-02-26 31/week @ 2025-03-05 212/week @ 2025-03-12 94/week @ 2025-03-19 86/week @ 2025-03-26 49/week @ 2025-04-02 48/week @ 2025-04-09 79/week @ 2025-04-16 126/week @ 2025-04-23 82/week @ 2025-04-30

343 downloads per month
Used in 15 crates (2 directly)

MIT/Apache

255KB
6.5K SLoC

About

Build status Latest version Docs License

scm-record is a Rust library for 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.

The scm-record library is directly integrated into these projects:

  • git-branchless: the git record -i command lets you interactively select and commit changes.
  • Jujutsu: as the built-in diff editor; see the ui.diff-editor configuration option.

Standalone executable

scm-diff-editor is a standalone executable that uses scm-record as the front-end. It can be installed via cargo:

$ cargo install --locked scm-diff-editor

The scm-diff-editor executable can be used with these tools:

Future work

Feature wishlist

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

Integration with other projects

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

Dependencies

~9–19MB
~278K SLoC