【问题标题】:Creating commit with Jgit and plumbing commands使用 Jgit 和管道命令创建提交
【发布时间】:2015-07-27 12:02:12
【问题描述】:

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

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

最终

objectInserter.insert( treeFormatter );

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

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

我发现here

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

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

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

【问题讨论】:

    标签: java git jgit git-plumbing


    【解决方案1】:

    刚刚找到解决办法,

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 2014-08-31
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      相关资源
      最近更新 更多