A crate for handling the references stored in various formats in a git repository.
References are also called refs which are used interchangeably.
Refs are the way to keep track of objects and come in two flavors.
- symbolic refs are pointing to another reference
- peeled refs point to the an object by its ObjectId
They can be identified by a relative path and stored in various flavors.
- one reference maps to a file on disk
- references are stored in a single human-readable file, along with their targets if they are symbolic.
- supersedes all of the above to allow handling hundreds of thousands of references.
pub use git_object::bstr;
Transactions are the only way make changes to the ref store in order to increase the chance of consistency in a multi-threaded environment.
Indicate that the given BString is a validate reference name or path that can be used as path on disk or written as target of a symbolic reference
A validated and potentially partial reference name - it can safely be used for common operations.
A validated prefix for references to act as a namespace.
A validated complete and fully qualified reference name, safe to use for all operations.
A fully owned backend agnostic reference
The git reference store. TODO: Figure out if handles are needed at all, which depends on the ref-table implementation.