= Scutiger

Scutiger is a collection of general-purpose Git utilities for people who use Git a lot.

== Included Command-Line Utilities

The link:scutiger-bin/[`scutiger-bin`] crate provides command-line utilities intended for use by users and for scripting purposes.
The documentation for that crate describes each program in detail.

git at::
  `git at` looks up the first commit on a branch with a commit message that matches a PCRE-compatible regular expression.
  Its primary purpose is to allow referencing commits for scripting, while having more power than the built-in `HEAD^{/pattern}` syntax.
git recent-refs::
  `git recent-refs` lists the most recent references and commits that you've used.
  It can sort by the committer date (`--sort=committerdate`), author date (`--sort=authordate`), or the date that the commit was last checked out (`--sort=visitdate`).

== Included Git LFS-Specific Utilities

The link:scutiger-lfs/[`scutiger-lfs`] crate provides Git LFS-specific utilities.
The documentation for that crate describes each program in detail.

git-lfs-transfer::
  `git-lfs-transfer` provides an experimental server-side implementation of the proposed Git LFS pure SSH-based protocol.
  This utility is intended to be invoked over SSH to transfer data from one repository to another.
  https://github.com/git-lfs/git-lfs/blob/main/docs/proposals/ssh_adapter.md[The Git LFS documentation outlines the protocol.]

== Former Binaries

This package used to include `git test-merge`, but no longer does, because Git includes `git merge-tree` instead.

== Building

You will need Rust 1.63 or later, Cargo, GNU Make, and Git.
If you additionally have zlib, the 8-bit version of libpcre2, and libgit2 available, Scutiger will dynamically link against them.
This is highly recommended for security reasons.

Simply type `make` to build.
Type `make test` to run the tests.

== Compatibility

Scutiger utilities are designed to compile with Rust 1.63 or later.
They may also work on earlier versions, but this has not been tested.

Dependencies are pinned to versions which work on the supported version of Rust.

The code is written in a generic way so it should function on most platforms; however, only Linux is tested at the moment.

== What is _Scutiger_?

As mentioned, it's a collection of general-purpose Git utilities—oh, wait, you meant, “what does ‘Scutiger’ normally mean?”
It's the name of two genera, one of fungi (in the family Albatrellaceae) and one of toads (in the family Megophryidae).
This project is named after the fungi, because fungi are neat.
