是否有一种方法可以将数据流式传输到GIT而不是传入文件名?

本文关键字:GIT 传输 文件名 数据流 一种 方法 是否 | 更新日期: 2023-09-27 18:09:17

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

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

我们希望实用地提供tree/path和filename以及其他属性,但是该文件实际上并不存在。GIT本身在某个时刻(当它读取文件时)将数据流到自己,并以某种方式存储文件属性数据。

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

这是可能使用C, c#或Java吗?

是否有一种方法可以将数据流式传输到GIT而不是传入文件名?

您可以使用hash-object

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

这将根据echo命令的输出将gitid设置为新的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"

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