gpt4 book ai didi

JGit 裸提交/树构建

转载 作者:行者123 更新时间:2023-12-01 03:51:28 25 4
gpt4 key购买 nike

我正在尝试使用 jgit 将单个 blob 直接提交到存储库。我知道如何插入 blob 并获取其 sha1,但是我在为这种情况构建树时遇到了困难。我似乎无法弄清楚如何正确使用 jgit 的树抽象(TreeWalk 等)递归构建一棵树,几乎与之前的提交相同,只有 blob 的不同父树。

在 JGit 中这样做的惯用方法是什么?

我问的原因是因为我正在编写一个程序,它是 git 存储库中文档的一种编辑器。就我而言,使用 git 的全部意义在于能够同时拥有多个版本的文档(也称为分支)。由于它是一个编辑器,我必须能够提交更改,但是由于我想同时查看文档的多个版本,因此无法使用 JGit 瓷器 API check out 、修改文件和提交,它必须直接工作使用 git 对象。

最佳答案

您可以使用的低级 API 是 TreeFormatter与 CommitBuilder 一起使用。

可以看到使用它的示例 here .在这种情况下,它构造一个具有多个子树的新树对象。

在您的情况下,您可能必须递归遍历树并在更改后的文件的路径上创建新的树对象并将它们自下而上插入。对于树的其余部分,您可以使用现有的树 ID,而不必深入到它们中。我建议查看 TreeWalk#setRecursiveTreeWalk#setPostOrderTraversal .

另一种选择是创建一个核内 DirCache,用提交和更新条目中的 DirCacheEntries 填充它,然后调用 DirCache#writeTree .

关于JGit 裸提交/树构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22320996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com