libgit2/libgit2sharp — pull request #215 by pwkelley (2012-09-18 13:36:54+00:00)
Title: Support for custom, managed ODB backends

This pull request adds interop for an ODB backend to be implemented in C#.

The author of the backend derives their backend from the abstract class `OdbBackend` (and `OdbBackendStream` if they are supporting streaming reads or writes). The author declares, through the `SupportedOperations` property, which operations their backend supports.

The backend is added at runtime to the object database by calling `ObjectDatabase.AddBackend` and passing a reference to the backend and a priority.

This pull request includes a test that exercises most of the backend functionality.

Some of the interop in this change is not for the faint of heart :-)