5 releases (breaking)

0.5.0 Jan 10, 2025
0.4.0 Oct 9, 2024
0.3.0 May 26, 2024
0.2.0 Dec 25, 2023
0.1.0 Aug 19, 2023

#301 in Development tools

Download history 2784/week @ 2024-11-21 2294/week @ 2024-11-28 2406/week @ 2024-12-05 2281/week @ 2024-12-12 1694/week @ 2024-12-19 1417/week @ 2024-12-26 4689/week @ 2025-01-02 4317/week @ 2025-01-09 3613/week @ 2025-01-16 5488/week @ 2025-01-23 7138/week @ 2025-01-30 7401/week @ 2025-02-06 6573/week @ 2025-02-13 5333/week @ 2025-02-20 6670/week @ 2025-02-27 9547/week @ 2025-03-06

29,172 downloads per month
Used in 19 crates (4 directly)

MIT/Apache

180KB
4.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):


lib.rs:

Reusable change selector UI for source control systems.

Dependencies

~7–17MB
~243K SLoC