vcs-git-v0.5.0
·
45 commits
to main
since this release
Added
branch_status(dir) -> BranchStatus— a combined branch + working-treefetch_from(dir, remote)— fetch from a named remote (`fetch --quietconflicted_files(dir)— paths with unresolved merge conflictsstatus_tracked(dir)—statusminus untracked filesGit::switch_with_stash(dir, branch)(also onGitAt) — switch branchesclone_repo(url, dest, CloneSpec)—git clonewith aCloneSpecbuilder- Tag operations:
tag_create(lightweight, optional rev), show_file(dir, rev, path)— file content at a revisionconfig_get(dir, key)→Option<String>(config --get; exit 1 →None—remote_add(dir, name, url)andremote_set_url(dir, name, url).blame(dir, path, rev)→Vec<BlameLine>(blame --line-porcelain):- Sequencer:
cherry_pick(dir, rev),revert(dir, rev)(--no-edit+ capabilities()→GitCapabilities { version: GitVersion }— the installed- Injection guards on every exposed positional argument — names, revisions,
RefNameandRevSpecvalidating newtypes — optional up-front validationGit::harden()/Git::hardened()— an untrusted-repo execution profileconflictmodule — a typed model of conflict markers:parse_conflicts
Changed
- Breaking: four multi-option
GitApimethods now take a spec/builder - Bumped
processkitto 0.8 — the re-exportedError/ProcessResultcarry - Internal: the
CliClientverbs the wrapper bodies call were renamed to one - New off-by-default
cancellationfeature: pulls in processkit's - Internal: the diff model + parser (
ChangeKind/DiffLine/Hunk/FileDiff/
Fixed
diff/diff_textpin thea/…b/diff prefixes (--src-prefix/--dst-prefix),branches/is_merged/tag_listpass--no-column, so a user's- Commands whose failure output feeds the error classifiers (the
commit, show_filenormalises\→/only on Windows — on Unix a backslash is abranch_statusruns withGIT_OPTIONAL_LOCKS=0, so the snapshot/pollconflict::parse_conflicts: a repeated|-run line inside a diff3 region is