[WIP] git bare revision cooker
This cooker handles a single revision history up to a revision id. It outputs a Git bare repository of the revision, directory and file objects, packed into a tarball.
This implementation uses the dulwich library to handle git objects. It writes progressively a disk-backed repository in a temporary location before outputting the tarball info the destination in-memory file.
As dulwich tree objects can only be created from the leaves (files) to the root, the tree-processing algorithm iterates in a depth-first fashion.
Further work includes:
- making it ready for production
- output a git bundle which is easier to work with as a git user
Related to #843 (closed)
Test Plan
Did manual tests in docker environment. Tested by running the cooker module directly with the vault-worker configuration found in Docker.
TODO need a pytest test suite inspired by the other cookers.
Migrated from D4766 (view on Phabricator)