有没有办法将数据流式传输到GIT而不是传入文件名?

时间:2011-09-22 18:01:27

标签: c# java c git

我们希望将文件系统中不存在的文档(它们在数据库中)流式传输到GIT中。由于有数千个文档,我们不想在磁盘上创建它们。

我们知道我们可以使用GIT Blob类从GIT流式传输文档。

我们希望实际提供树/路径和文件名以及任何其他属性,但该文件实际上不存在。 GIT本身在某个时刻(当它读取文件时)将数据流式传输到自身并以某种方式存储文件属性数据。

我知道如何在GIT中添加文件,我想用流代替接口。

这可以使用C,C#还是Java?

2 个答案:

答案 0 :(得分:5)

您可以使用hash-object

gitid=$(echo hello world | git hash-object -w --stdin)

这将根据gitid命令的输出将echo设置为新blob对象的git id。

然后,您可以使用git update-index使用此blob和commit添加索引条目,以在git存储库中创建包含新blob的提交对象。

git update-index --add --cacheinfo 100644 "$gitid" new-blob.txt

git commit -m "new commit"

答案 1 :(得分:3)

您还可以通过从代码中创建对象和树来“手动”创建对象。这是GitHub的Tom Preston-Werner描述结构的视频:http://sea.ucar.edu/event/unlocking-secrets-git我不知道这是否适合你,但这是一个选择