use-git 0.0.1

Feature-gated facade crate for RustUse Git vocabulary primitives
Documentation

use-git

use-git is a RustUse facade crate for primitive Git vocabulary: object identifiers, refs, branches, tags, remotes, refspecs, revision selectors, pathspecs, ignore patterns, attributes, and status metadata.

It is not a Git client, repository engine, command runner, or storage implementation. It provides small, composable types that other crates can use when they need to talk about Git concepts without taking on a full Git dependency.

What this crate provides

Feature Namespace Focused crate Purpose
oid use_git::oid use-git-oid Object identifier and short object identifier primitives
refs use_git::refs use-git-ref Ref names, ref kinds, symbolic refs, and HEAD vocabulary
branch use_git::branch use-git-branch Local, remote-tracking, and default branch name primitives
tag use_git::tag use-git-tag Tag names, tag kind vocabulary, and version-like tag wrappers
remote use_git::remote use-git-remote Remote names, remote refs, and remote-tracking ref primitives
refspec use_git::refspec use-git-refspec Fetch and push refspec syntax primitives
revision use_git::revision use-git-revision Revision selectors, suffixes, and range vocabulary
pathspec use_git::pathspec use-git-pathspec Pathspec patterns, magic labels, and scope vocabulary
ignore use_git::ignore use-git-ignore Gitignore-style pattern and line classification vocabulary
attribute use_git::attribute use-git-attribute Gitattributes pattern and attribute state vocabulary
status use_git::status use-git-status Index, worktree, conflict, file-change, and porcelain status metadata

Installation

[dependencies]
use-git = "0.0.1"

Disable default features when you want a narrow facade surface:

[dependencies]
use-git = { version = "0.0.1", default-features = false, features = ["oid", "refs"] }

Basic usage

#[cfg(all(feature = "oid", feature = "branch", feature = "refs"))]
{
use use_git::{GitBranchName, GitOid, GitRefName};

let oid: GitOid = "0123456789abcdef0123456789abcdef01234567"
	.parse()
	.expect("valid oid");
let branch = GitBranchName::new("feature/use-git").expect("valid branch");
let reference = GitRefName::new("refs/heads/main").expect("valid ref");

assert_eq!(oid.kind(), use_git::GitOidKind::Sha1);
assert!(branch.is_feature());
assert!(reference.is_branch());
}

Scope

The facade only composes the focused vocabulary crates. It does not resolve, inspect, fetch, update, store, or compare repository data.

Non-goals

  • No Git command execution.
  • No repository storage or object database access.
  • No clone, fetch, pull, push, merge, rebase, checkout, or commit behavior.
  • No packfile parsing.
  • No history walking or diff computation.
  • No dependency on git2, gix, gitoxide, or libgit2 bindings.