我有一个新克隆的存储库的SHA-1。我要这个SHA-1的作者缩进。
所以我需要使用RevWalk并迭代整个存储库?或者是否有 findXX
方法或其他代码可用于获取 RevCommit
或其他具有 PersonIdent 的对象?
我尝试了什么:
public void authorInfoOf(Repository repo, AnyObjectId head) {
try {
try (RevWalk walk = new RevWalk(repo)) {
ObjectDatabase db = repo.getObjectDatabase();
ObjectLoader k = repo.newObjectReader().open(head);
ObjectReader s;
// repo.newObjectReader().open(head);
ObjectStream st = k.openStream();
// RevWalk rw2 = new RevWalk(k);
RevCommit commit = null;// walk.parseCommit(ref.getObjectId());
PersonIdent authorIndent = commit.getAuthorIdent();
System.out.println("\nCommit-Message: " + commit.getFullMessage() + " " + authorIndent.getEmailAddress());
}
} catch (Exception e) {
System.out.println("Authir info of Anybject id Err " + e);
e.printStackTrace();
}
}
这对我有用:
public RevCommit getCommit(String idString, Repository repository, Git git){
try{
ObjectId o1 = repository.resolve(idString);
if(o1 != null){
try( RevWalk walk = new RevWalk( repository ) ) {
RevCommit commit = walk.parseCommit( o1 );
PersonIdent ai = commit.getAuthorIdent();
System.out.println("bbb >>" + ai.getEmailAddress() + "|" + ai.getTimeZone() + "|" + ai.getWhen() + ", ref :" + idString);
return commit;
}
}else{
System.err.println("Could not get commit with SHA :" + idString);
}
}catch (Exception e) {
System.out.println("err :" + e);
e.printStackTrace();
}
return null;
}
RevCommit
表示 Git 存储库中的特定提交。使用 RevWalk::p arseCommit()
获取特定对象 id/SHA-1 的 RevCommit
。
例如:
try( RevWalk walk = new RevWalk( repository ) ) {
RevCommit commit = walk.parseCommit( ref.getObjectId() );
}
parseCommit
返回给定ObjectId
的匹配提交对象。
为了将SHA-1(string)转换为ObjectId
,请使用ObjectId::fromString()
:
ObjectId commitId = ObjectId.fromString( "ab434..." );
另请参阅:如何使用JGit从SHA1 ID字符串获取RevCommit或ObjectId?
在上面的示例中,Ref
用于引用对象 id。Ref
s 表示对对象 ID(如分支、标记)或特殊引用(如 HEAD)的命名引用。Repository::exactRef() 可用于将字符串解析为 Ref
对象。
例如:
Ref headRef = repository.exactRef( "HEAD" );
如何使用jgit遍历来自特定分支的特定提交的所有内容? 这段代码从提交中检索一个特殊文件,但我希望遍历提交的所有内容。
问题内容: 我想使用JGit获取存储库中的最后提交元数据(按日期最小的提交)。 我知道我可以使用以下方式获取提交元数据 但是如何获取最新的提交哈希? 还有其他方法可以直接在存储库中按日期获取最小数据吗? 问题答案: 按所有分支中的最后提交日期进行比较。 可以更改为仅比较远程分支。或者… 可以省略流利的setter 以便从本地存储库读取。
问题内容: 我一直在研究将要集成Git功能的基于Java的产品。使用Git的功能之一,我通过分阶段执行将10多个文件添加到Git存储库中,然后在一次提交中提交了这些文件。 以上过程可能相反吗?即查找作为提交的一部分提交的文件列表。 我在命令的帮助下获得了提交,但是我不确定如何获取提交的文件列表。 示例代码: 问题答案: 每个提交都指向一 棵树 ,该 树 表示构成该提交的所有文件。注意,这不仅包括使
我一直在开发一个基于Java的产品,Git特性将被集成到该产品中。通过使用Git的一个特性,我将10个文件添加到Git存储库中,然后在一次提交中提交。 上述过程是否可能相反?即查找作为提交的一部分提交的文件列表。 我在< code>git.log()命令的帮助下获得了提交,但是我不确定如何获得提交的文件列表。 示例代码:
问题内容: 这是一个简单的问题,但请说我有一个MxN矩阵。我要做的就是提取特定的列并将其存储在另一个numpy数组中,但是我得到了无效的语法错误。这是代码: 似乎上述行就足够了,但我想不是。我环顾四周,但找不到关于此特定场景的任何语法明智的方法。 问题答案: 我假设你想要的列和? 要一次选择多个列,请使用 要一次选择一个,请使用 带有名称: 您可以从…获得名字。
我想获取作为提交一部分的所有文件的列表。我有可用的提交ID。 我查看了以下链接 如何使用JGit获取提交的文件列表 并尝试了下面的代码。 和以下代码 使用上面的代码,我得到了分支中存在的所有文件的列表。我需要在提交中删除,修改或添加的文件列表。 使用以下git命令,我成功获得了属于特定提交的文件列表 我想从JGit那里得到同样的东西。 更新:我不想得到两个提交之间的区别,而只是作为提交的一部分更改