.Net Git Library, которая позволяет в памяти добавлять / изменять файлы - PullRequest
1 голос
/ 30 января 2012

Кто-нибудь знает библиотеку Git для C #, которая позволяет клиентскому коду добавлять и изменять файлы репозитория в памяти?У меня есть пустой репозиторий, который я бы хотел прагматично добавлять и модифицировать.Поскольку это пустой репозиторий, я не хочу записывать файлы в файловую систему.Существует ли что-то подобное?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 31 января 2012

GitSharp предоставляет перегрузку Create() для своего типа Blob, что позволяет осуществлять прямую запись в базу данных Git Object без необходимости промежуточного файл в рабочем каталоге.

В приведенном ниже модульном тесте (слегка исправленном из BlobTests.cs ) демонстрируется такая возможность:

[Test]
public void WriteBlob()
{
    using (var repo = GetTrashRepository())
    {
        blob = Blob.Create(repo, "and this is the data in me\r\n\r\n");
        Assert.AreEqual("95ea6a6859af6791464bd8b6de76ad5a6f9fad81", blob.Hash);

        var same_blob = new Blob(repo, blob.Hash);
        Assert.AreEqual(Encoding.UTF8.GetBytes("and this is the data in me\r\n\r\n"), same_blob.RawData);
    }
}

EDIT:

Возможно, вы также захотите взглянуть на NGit . Это автоматизированный порт JGit для .Net. В отличие от GitSharp, он все еще поддерживается.

ObjectInserter (см. здесь ) выглядит как что-то многообещающее .

Примечание: Если вы хотите использовать Git в качестве базы данных объектов, непосредственно записывая объекты без использования Dance Dance, обязательно создайте ссылку (в .git/refs), чтобы предотвратить их обрезается при git gc запуске.

Примечание 2: Объекты Git доступны только для чтения, поэтому вы не сможете "изменить" Blob. Однако, если вы создали ссылку, указывающую на нее, вы можете создать новую «обновленную» Blob и изменить цель ссылки, чтобы она указывала на новую «версию».

0 голосов
/ 31 января 2012

В файловой системе есть пустой репозиторий. Если вы хотите быстрых манипуляций в памяти, используйте оперативный диск. Таким образом, вы по-прежнему получаете новейшую функциональность git.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...