如何在 JGit 中使用 Repository::resolve(String)
How to use Repository::resolve(String) in JGit
我正在 java 使用来自 JGit 的 Class 存储库编写我的程序。
这个 class 有方法 resolve(String revstr)。
基本上,此方法解析 git 修订字符串和 returns 对象 ID。支持这些运算符的特定组合:
HEAD, MERGE_HEAD, FETCH_HEAD
SHA-1: a complete or abbreviated SHA-1
refs/...: a complete reference name
short-name: a short reference name under refs/heads, refs/tags, or refs/remotes namespace
tag-NN-gABBREV: output from describe, parsed by treating ABBREV as an abbreviated SHA-1.
id^: first parent of commit id, this is the same as id^1
id^0: ensure id is a commit
id^n: n-th parent of commit id
id~n: n-th historical ancestor of id, by first parent. id~3 is equivalent to id^1^1^1 or id^^^.
id:path: Lookup path under tree named by id
id^{commit}: ensure id is a commit
id^{tree}: ensure id is a tree
id^{tag}: ensure id is a tag
id^{blob}: ensure id is a blob
我想用这个方法
Repository repo;
ObjectId commit = repo.resolve("cnfuwfxmiazsdixfnsdiufsdhfiusfhsfisfh^{tree}");
System.out.println(commit );
预期输出:
cnfuwfxmiazsdixfnsdiufsdhfiusfhsfisfh
输出:
sjakfshdofcsmdfocsdfjdofdjgdhgfdgfhgf
//Output is another commit in project.
我想要插入的提交,但它显示了另一个提交。
我想是因为它是提交 id 的第一个父级。
有什么方法可以获得我放入方法 resolve()
中的相同提交 ID?
您传递给 resolve()
的表达式要求 cnf...
的 tree id(顺便说一句,Git 对象 ID 仅包含十六进制字符)。这很可能是您得到的,您指定的提交的树 ID。
为了将字符串转换为 JGit ObjectId,请使用
ObjectId objectId = ObjectId.fromString( "..." );
另请参阅:How to obtain the RevCommit or ObjectId from a SHA1 ID string with JGit?
我正在 java 使用来自 JGit 的 Class 存储库编写我的程序。
这个 class 有方法 resolve(String revstr)。
基本上,此方法解析 git 修订字符串和 returns 对象 ID。支持这些运算符的特定组合:
HEAD, MERGE_HEAD, FETCH_HEAD
SHA-1: a complete or abbreviated SHA-1
refs/...: a complete reference name
short-name: a short reference name under refs/heads, refs/tags, or refs/remotes namespace
tag-NN-gABBREV: output from describe, parsed by treating ABBREV as an abbreviated SHA-1.
id^: first parent of commit id, this is the same as id^1
id^0: ensure id is a commit
id^n: n-th parent of commit id
id~n: n-th historical ancestor of id, by first parent. id~3 is equivalent to id^1^1^1 or id^^^.
id:path: Lookup path under tree named by id
id^{commit}: ensure id is a commit
id^{tree}: ensure id is a tree
id^{tag}: ensure id is a tag
id^{blob}: ensure id is a blob
我想用这个方法
Repository repo;
ObjectId commit = repo.resolve("cnfuwfxmiazsdixfnsdiufsdhfiusfhsfisfh^{tree}");
System.out.println(commit );
预期输出:
cnfuwfxmiazsdixfnsdiufsdhfiusfhsfisfh
输出:
sjakfshdofcsmdfocsdfjdofdjgdhgfdgfhgf
//Output is another commit in project.
我想要插入的提交,但它显示了另一个提交。 我想是因为它是提交 id 的第一个父级。
有什么方法可以获得我放入方法 resolve()
中的相同提交 ID?
您传递给 resolve()
的表达式要求 cnf...
的 tree id(顺便说一句,Git 对象 ID 仅包含十六进制字符)。这很可能是您得到的,您指定的提交的树 ID。
为了将字符串转换为 JGit ObjectId,请使用
ObjectId objectId = ObjectId.fromString( "..." );
另请参阅:How to obtain the RevCommit or ObjectId from a SHA1 ID string with JGit?