使用 JGit 从 Git 检索提交消息日志

2024-02-06

我只想从 Git 存储库检索提交日志,其中包含您在特定存储库上完成的所有提交的消息。我找到了一些实现此目的的代码片段,并以异常结束。

try {
    FileRepositoryBuilder builder = new FileRepositoryBuilder();
    Repository repo = builder.setGitDir(new File("https://github.com/name/repository.git")).readEnvironment().findGitDir().build();
    RevWalk walk =new RevWalk(repo);
    ObjectId head = repo.resolve(Constants.HEAD);
    RevCommit commit =walk.parseCommit(head);
    Git git =new Git(repo);
    Iterable<RevCommit> gitLog = git.log().call();
    Iterator<RevCommit> it = gitLog.iterator();
    while(it.hasNext())
    {
        RevCommit logMessage = it.next(); 
        System.out.println(logMessage.getFullMessage());
    }
}
catch(Exception e) {
    e.printStackTrace();
}

然而它给了我:

org.eclipse.jgit.api.errors.NoHeadException: No HEAD exists and no explicit starting revision was specified exception.

我该如何摆脱这个?我正在使用 org.eclipse.jgit JAR 版本 2.0.0.201206130900-r


这是执行上述操作的正确代码。

FileRepositoryBuilder builder = new FileRepositoryBuilder();
Repository repo = builder.setGitDir(new File("localrepositary"+"\\.git")).setMustExist(true).build();
Git git = new Git(repo);
Iterable<RevCommit> log = git.log().call();
for (Iterator<RevCommit> iterator = log.iterator(); iterator.hasNext();) {
  RevCommit rev = iterator.next();
  logMessages.add(rev.getFullMessage());
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JGit 从 Git 检索提交消息日志 的相关文章

随机推荐

  • 在 C++ 中将矩阵定义为数组数组并计算其逆矩阵

    不幸的是 我在 C 方面没有太多经验 并且我正在努力在 C 方面取得进步 首先 我定义了数组数组 以便形成一个 3x3 矩阵 array lt array lt double gt gt input gcnew array lt array
  • C++ 中如何解析嵌套模板?

    我最近问了一个关于确定迭代器在编译时是否指向复数值的问题 并收到了有效的答案 问题在这里 如何专门针对指向复数值的迭代器的算法 https stackoverflow com questions 59954327 how can i spe
  • Espresso:匹配对话框下的视图

    我的测试用例相当简单 在主活动视图上 我有一个抽屉 该抽屉中的一个菜单项可打开一个对话框 我想断言 单击此菜单项 在打开对话框之前关闭抽屉 这是我现在所拥有的 Opens the drawer onView withId R id acti
  • WebDriver Wait '.until(ExpectedConditions.elementToBeClickable' 仅当我将 Thread.sleep(500) 添加到代码中时才有效?

    我正在尝试使用 webdriver wait 单击页面上可见的按钮 但 webdriver 仅在添加后才能单击该按钮Thread sleep到代码 在执行代码之前 我还检查了按钮是否可见 True returns true 按钮可见性检查
  • 钥匙串中的 macOS 安装程序证书评估错误:扩展密钥用法无效

    我生成了一个用于代码签名的 mac 安装程序证书 但收到一个错误 该错误阻止我使用证书对安装程序进行签名 在评估钥匙串访问中的证书时 出现错误 无效的扩展密钥用法 以下是尝试评估安装程序证书以进行代码签名时出现的错误序列 我发现使用 Xco
  • 如何启用 Android 内部应用程序共享?

    我已在 Play 控制台中上传 Android App Bundle 进行 Alpha 测试 但当我打开测试 URL 时 它显示在下面的对话框中 尝试以下选项以启用内部应用程序共享 Option 1 Step 1 打开 Play 商店 St
  • IntelliJ 中的 Google Play、Drive API 示例代码

    我正在关注Android 版 Google 云端硬盘快速入门说明 https developers google com drive quickstart android并让它在 Eclipse Kepler 中工作 Juno 就是很狡猾
  • 值不能为空。参数名称:实体集

    我有一个相当标准的设置 只有 POCO 类 public class Project public int ProjectId get set public string Name get set public int ClientId g
  • 将图像拖放到画布上 (FabricJS)

    问题 我想用图像而不是canvas目的 这意味着您必须先将要添加的内容添加到画布并作为画布的一部分 然后才能添加它 这些图像实际上是网站的一部分 因此不需要做一些复杂的事情 我在这里找到的这段代码仅适用于对象而不是实际元素的情况 顺便说一句
  • 在 UITableView 中滚动时视图被替换

    我是一名 Android 开发人员 对 iOS 应用程序开发非常陌生 我正在尝试构建一个简单的聊天系统 每个单元格中只有一行数据 我正在使用自定义UIView类来生成气泡和UILabel and an UIImageView以编程方式 当我
  • Python 从键列表生成动态字典

    我确实有一个清单 如下所示 keyList1 Person Male Boy Student id 123 Name value1 Roger 如何生成可以按如下方式检索的动态字典 mydict Person Male Boy Studen
  • Bigquery - 计划存储过程不再工作

    最近 Bigquery UI 发生了变化 似乎不再可以安排存储过程自动执行 使用 UI 只是不断要求插入目标表 如果我放置一个虚拟表 则会创建计划 但是当尝试执行时只会抛出一个错误 表明在执行存储过程时我们无法拥有目标表 有人遇到这个问题并
  • SQL 注入预防 - GET_VARS

    我有一个网址 有效时将如下所示 site com page php id 12345 我试图了解我们是否容易受到 sql 注入的攻击 在这个特定的实例中 该值只能是正整数值 因为它是一个 ID 号 我们有时确实使用其他变量 可以是字母或文本
  • Groovy 中分割字符串的惯用方法

    是否有更好 更短 更好的方法来执行以下操作 filename AA BB CC DD EE FF xyz parts filename split packageName parts 0 parts 1 parts 2 parts 3 pa
  • AngularJS - 单个模板中的多个 ng-view

    我正在使用 AngularJS 构建一个动态 Web 应用程序 是否可以有多个ng view在一个模板上 你可以只拥有一个ng view 您可以通过多种方式更改其内容 ng include https docs angularjs org
  • 文件内容更改后使用 ifstream 从同一文件读取(直到 EOF)

    要求 我必须读到 EOF 16 个字节 时间 来自特定文件 以及 然后说睡5秒 现在 5秒后 当我尝试阅读时 从文件 其内容将 到那时已被附加 预期的设计必须是这样的 它从它所在的点读取 之前离开并再次扫描 内容 一次 16 个字节 直到
  • bigint 通过 PDO 截断?

    我遇到了将大整数存储在 a 中的问题BIGINT通过 PDO 在 MySQL 上列 如果我运行这个测试 number 30123456789 var dump number prints string 11 30123456789 new
  • 使用 Connect-MSOLservice 与服务主体连接

    我正在尝试使用在 AzureAD 中创建的服务主体通过 PowerShell 脚本进行连接 我成功创建了 SP 创建了密钥 还创建了自签名证书并将其与帐户关联 我知道如何使用 Connect AzureAD 但 Connect MSOLse
  • 可以使用按钮删除从项目添加的数据库条目吗?

    我正在尝试使用 Android 编程 大书呆子牧场指南 自学 Android 开发 其中一个练习 如果您熟悉这本书 请从第 14 章开始 涉及创建一个工具栏 其中包含一个项目 该项目将新条目添加到单击该项目时的数据库 一个挑战问题是删除条目
  • 使用 JGit 从 Git 检索提交消息日志

    我只想从 Git 存储库检索提交日志 其中包含您在特定存储库上完成的所有提交的消息 我找到了一些实现此目的的代码片段 并以异常结束 try FileRepositoryBuilder builder new FileRepositoryBu