This is based in part of work I did years ago in hgit, but it's mostly

new code since I'm using pygit2 instead of dulwich and the hg storage

interfaces have improved. Some cleanup of old hgit code by Pulkit,

which I greatly appreciate.

test-git-interop.t does not cover a whole lot of cases, but it

passes. It includes status, diff, making a new commit, and hg annotate

working on the git repository.

This is _not_ (yet) production quality code: this is an

experiment. Known technical debt lurking in this implementation:

Writing bookmarks just totally ignores transactions.

The way progress is threaded down into the gitstore is awful.

Ideally we'd find a way to incrementally reindex DAGs. I'm not sure how to do that efficiently, so we might need a "known only fast-forwards" mode on the DAG indexer for use on hg commit and friends.

and friends. We don't even _try_ to do anything reasonable for hg pull or hg push .

or . Mercurial need an interface for the changelog type.

Tests currently require git 2.24 as far as I'm aware: git status has

some changed output that I didn't try and handle in a compatible way.

This patch has produced some interesting cleanups, most recently on

the manifest type. I expect continuing down this road will produce

other meritorious cleanups throughout our code.