.Net Git库,允许在内存中添加/修改文件
本文关键字:添加 修改 文件 内存 Git Net | 更新日期: 2023-09-27 18:22:06
有人知道C#的Git库吗?它允许客户端代码添加&修改内存中的存储库文件?我有一个空的存储库,我想务实地对其进行添加和修改。因为它是一个裸存储库,所以我不想将文件写入文件系统。这样的东西存在吗?
谢谢!
GitSharp在其Blob
类型上暴露了Create()
重载,这允许直接写入Git对象数据库,而不需要工作目录中的中间文件。
下面的单元测试(从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);
}
}
编辑:
您可能还愿意查看NGit。它是JGit到.Net的一个自动化端口。与GitSharp相反,它仍然得到维护。
ObjectInserter
(请参见此处)看起来像是有前途的。
注意:如果您愿意使用Git作为对象数据库,通过直接编写对象而不使用Commit舞蹈,请确保创建一个引用(在.git/refs
中),以防止它们在git gc
启动时被修剪。
注意2:Git对象是只读的,因此您将无法"修改"Blob
。但是,如果创建了指向它的引用,则可以创建新的"更新"Blob
,并将引用的目标更改为指向新的"版本"。
文件系统上的裸存储库IS。如果您想要一些快速的内存操作,请使用ram磁盘。通过这种方式,您仍然可以获得git的最新功能。