An extra thanks goes to all my sponsors, I wish you a great year 2022!

For gitoxide, this means to refocus on making it useful to application developers and carve out its space
in an area firmly ruled by `git2`. This should attract contributors and start implanting `gitoxide` into the crate ecosystem
and enable natural adoption.

In order to do that, we will focus development on `git-index`, `git-worktree` and `git-diff` to support non-bare clones,
fetches, as well as something like `git-status`. It's going to be a lot of work as `gitoxide` will aim to provide a feature-complete implementation that will not make compromises with performance or usability.

### MIDX is ready

The multi-index format acts as optional, single index for many packs at once which can greatly accelerate object lookups and finding abbreviated hashes.

The object database now supports using multi-indices if present.

Gitoxide is now also able to write and verify multi-pack indices, with such functionality exposed in `gix pack multi-index`,
and it successfully creates indices for repositories that require large-offset support.

Furthermore, the foundation for a complete `fsck` like command were set to deeply validate all data known in a git repository. For now `gix repository verify` will only verify object databases though, completely ignoring references at the moment.

### `gix` embrace hierarchical sub-commands

Due to the now lifted requirement to support the now abandoned `argh` parser, `gix` previously used a single level of
dashed sub-commands. These have now been re-worked into a hierarchy of sub-commands which greatly helps with discoverability.

### `git-index` reading and basic `git-bitmap` EWAH access

The git index is an essential building block to creating commits, handling merges and speeding up `git-status`, while also enabling more recent features like sparse clones to support large mono-repos.

At its current state, the `git-index` crate decode an any index file using one or more threads, along with all extensions and versions 2 through 4 (all currently known ones). To enable this, `git-bitmap` was created to add support for decoding and iterating EWAH compressed bitmaps.

Even though the current implementation just creates an in-memory version of what's on disk, next steps are to allow useful modifications to it while maintaining extension data correctly.

### Stability and compatibility

In order to assure broad compatibility for when `git-repository` is used by other crates, the previous crate for opening
memory maps appeared to be unmaintained enough to be a liability. As its replaced, `mmap2` was chosen.

For stability it became necessary to rethink the strategy related to the minimum supported rust version (MSRV) whose
change is now considered a breaking change for `git-repository` and dependencies.
Other crates, like `gitoxide-core` and `cargo-smart-release` do not have a MSRV though, as before.

This step was taken to support the integration of `gitoxide` into `vergen`, which itself is a highly stable crate used by many.

### On the side: Cargo RFC PR nears completion

The review process of [RFC-3028](https://github.com/rust-lang/cargo/pull/9992) is in full motion and quite a few issues have been discovered and hopefully been fixed, too. The major one appears to be the need to add artifact information
into the registry itself. These changes I made with shaky hands as one doesn't touch code related to vital infrastructure
every day.

### On the agenda…

Next up on the path towards cloning a non-bare repository is to actually checkout a worktree. For that to happen, one would have to create an index from a tree and use that to perform the checkout. Thus far I have had a few sessions
just trying to understand how git creates an index from a tree in practice, and was slowed down by the immense
complexity of the code which seems to also deal with merges and a large amount of cases that must have accumulated
over the years. I hope a debugger session can bring clarity on the actual code path taken through this massive forest
to gain confidence that gitoxide's implementation will do things correctly.

Have a great new year 2022,
Sebastian

PS: The latest timesheets can be found [here](https://github.com/Byron/byron/blob/main/timesheets/2022.csv).
