aboutsummaryrefslogtreecommitdiff
path: root/apps/servers/octopus/supergit/README.md
blob: b105f186da7ddbd738eba6d2fdba930138be6c24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<div align="center">
    <img src="/kookienomicon/plain/apps/servers/octopus/supergit/logo.png" width="256px"/>
    <h1>supergit</h1>
</div>


Strongly typed git repository explorer This library provides a more
Rustic interface for git repositories, built on the `git2` bindings.
If you want more low-level access to your repository, consider using
that library instead.

supergit aims to make queries into a git repo as typed and easy as
possible.  Start by creating a `Repository`, and enumerating or
fetching `Branch`es that you are interested in.

```rust
use supergit::Repository;

let r = Repository::open("/path/to/repo").unwrap();
println!("{:?}", r.branches());

let branch = r.branch("main").unwrap();
let head = branch.head();
println!("{}: {}", head.id(), head.summary().unwrap_or("".into()));
```

## Library structure

The main abstraction layer for a repository is a set of iterators,
over branches, commits, and files in commit trees.  Some functions
implemented in `supergit` are quite computationally intensive; they
are marked as such with their runtime cost!  It's recommended to
include `supergit::prelude` to get started with development.