我们希望将文件系统中不存在的文档(它们在数据库中)流式传输到GIT中。由于有数千个文档,我们不想在磁盘上创建它们。
我们知道我们可以使用GIT Blob类从GIT流式传输文档。
我们希望实际提供树/路径和文件名以及任何其他属性,但该文件实际上不存在。 GIT本身在某个时刻(当它读取文件时)将数据流式传输到自身并以某种方式存储文件属性数据。
我知道如何在GIT中添加文件,我想用流代替接口。
这可以使用C,C#还是Java?
答案 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我不知道这是否适合你,但这是一个选择