我正在尝试使用 JGit 中的管道命令构建提交。除了获取信息,我使用的基本上是这些命令:
treeFormatter.append(folderName, FileMode.TREE, treeObjectId);
treeFormatter.append(fileName, FileMode.REGULAR_FILE, blobObjectId);
最终
objectInserter.insert( treeFormatter );
最后将最终树设置为提交。这适用于某些提交,但对于其他提交,尽管文件在那里,但我无法推送 repo。bash 说:
错误:解包失败:错误无效树(树号):错误排序
我在这里发现
树条目按包含条目名称的字节序列排序。但是,出于排序比较的目的,比较树对象的条目就好像条目名称字节序列有一个尾随的 ASCII '/' (0x2f)。
因此,尝试根据转换为对象名称(不是文件名)字节的特定顺序添加文件,但与来自 bash 的实际提交相比,我无法弄清楚 Git 需要哪个顺序添加文件。
所以:任何人都知道如何使用 JGit 中的管道方法来构建包含多个文件的提交?我很确定我只需要正确的对象排序方式,但不知道它是什么