如何在JGit中使用Repository :: resolve(String)

时间:2016-06-01 13:58:19

标签: java jgit

我正在使用JGit中的Class Repository在java中编写我的程序。

此类的方法为resolve(String revstr)。

基本上这个方法解析一个git修订字符串并返回一个对象id。支持这些运算符的特定组合:

  

HEAD,MERGE_HEAD,FETCH_HEAD
  SHA-1:完整或缩写的SHA-1
  refs / ...:完整的参考名称
  短名称:refs / heads,refs / tags或refs / remotes namespace下的简短引用名称   tag-NN-gABBREV:describe的输出,通过将ABBREV视为缩写的SHA-1进行解析。
  id ^:commit id的第一个parent,这与id ^ 1
相同   id ^ 0:确保id是提交
  id ^ n:提交ID为的第n个父   id~n:id的第n个历史祖先,由第一个父亲。 id~3相当于id ^ 1 ^ 1 ^ 1或id ^^^   id:path:由id命名的树下的查找路径   id ^ {commit}:确保id是提交
  id ^ {tree}:确保id是树
  id ^ {tag}:确保id是标签
  id ^ {blob}:确保id是blob

我想使用这种方法

Repository repo;
ObjectId commit = repo.resolve("cnfuwfxmiazsdixfnsdiufsdhfiusfhsfisfh^{tree}");
System.out.println(commit );

预期输出:

cnfuwfxmiazsdixfnsdiufsdhfiusfhsfisfh

输出:

sjakfshdofcsmdfocsdfjdofdjgdhgfdgfhgf
//Output is another commit in project.

我希望得到我已经插入的提交,但它向我显示了另一个提交。 我认为因为它是提交ID的第一个父。

有没有办法获得我在方法resolve()中添加的相同提交ID?

1 个答案:

答案 0 :(得分:1)

您传递给resolve()的表达式要求cnf...的{​​{3}}(BTW,Git对象ID仅包含十六进制字符)。这很可能是你得到的,你指定的提交的树ID。

要将字符串转换为JGit ObjectId,请使用

ObjectId objectId = ObjectId.fromString( "..." );

另请参阅:tree id