Drives the user's installed `git` via std::process::Command — the same approach as the TS app's git-sys backend — so no libgit2/git2 C dependency enters the workspace. Covers repo discovery / init, working-tree status, staging, commit, branch list / create / switch, history + diff, remotes, SSH keys and credential storage. Adds a worktree-isolated merge orchestrator: a branch merge runs in a throwaway detached worktree so a conflicting .op merge never writes conflict markers into the live document — a clean merge is fast-forwarded back, a conflicting one is reported as a file-granular ConflictBag with the live tree left pristine.
22 lines
820 B
TOML
22 lines
820 B
TOML
[package]
|
|
name = "op-git"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
license.workspace = true
|
|
description = "System-git-backed version control for OpenPencil documents"
|
|
|
|
# Native-only: this crate drives the system `git` executable via
|
|
# `std::process::Command`. It is the Rust counterpart of the TS
|
|
# Electron app's `apps/desktop/git/git-sys.ts` system-git backend.
|
|
# No heavy dependencies — the wire is plain subprocess + text parsing.
|
|
[dependencies]
|
|
thiserror = { workspace = true }
|
|
# Credential store (`auth.rs`) persistence — the host-keyed token /
|
|
# SSH-key table is serialized to a JSON file.
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
# Resolves the per-user config directory for the default credential
|
|
# store location (`AuthStore::user`).
|
|
dirs = "5"
|