0

我正在尝试使用 JGit 中的管道命令构建提交。除了获取信息,我使用的基本上是这些命令:

treeFormatter.append(folderName, FileMode.TREE, treeObjectId);
treeFormatter.append(fileName, FileMode.REGULAR_FILE, blobObjectId);

最终

objectInserter.insert( treeFormatter );

最后将最终树设置为提交。这适用于某些提交,但对于其他提交,尽管文件在那里,但我无法推送 repo。bash 说:

错误:解包失败:错误无效树(树号):错误排序

我在这里发现

树条目按包含条目名称的字节序列排序。但是,出于排序比较的目的,比较树对象的条目就好像条目名称字节序列有一个尾随的 ASCII '/' (0x2f)。

因此,尝试根据转换为对象名称(不是文件名)字节的特定顺序添加文件,但与来自 bash 的实际提交相比,我无法弄清楚 Git 需要哪个顺序添加文件。

所以:任何人都知道如何使用 JGit 中的管道方法来构建包含多个文件的提交?我很确定我只需要正确的对象排序方式,但不知道它是什么

4

1 回答 1

0

刚刚找到解决办法

您需要根据文件名或文件夹名按特定顺序放置文件,我的问题是我正在寻找 ObjectId.getName() ,这是这个哈希。

于 2015-05-15T14:41:00.813 回答