我的要求是捕获两个标签之间的提交消息,并且我想使用grgit插件来实现此目的。现在,有一个针对grgit的文档,我正在使用Log操作来获取两个标签之间的提交日志。我正在任务中编写此代码,并从命令提示符处执行ec = ecuting。我的任务看起来像这样:

task showLog <<{
   def grgit = org.ajoberstar.grgit.Grgit.open(dir: 'C:\\Rep9')
   def history = grgit.log()
}

并执行gradlew showLog之类的任务。我的任务显示BUILD SUCCESSFUL,但我无法在任何地方看到日志。我想查看整个日志,可能正在使用(我不确定)其他一些操作来捕获我的消息,如果有人可以帮助的话,那真的很棒。

最佳答案

当您在log()对象上调用grgit时,然后通过 LogOp 您将获得 Commit 对象的列表。然后,您可以仅遍历此对象,然后使用findAllgrep查找所需的对象。

说到标签,您可以使用 TagService 对其进行操作。要获取上述服务的实例,请先调用grgit.tag,然后调用via list() 操作,以获取 Tag 的列表。使用它来查找您感兴趣的标签。

Here是一个演示。

和相关的部分:

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath 'org.ajoberstar:grgit:1.4.1'
  }
}

import org.ajoberstar.grgit.Grgit

task showLog <<{
  def grgit = project.file('so').exists() ? Grgit.open('so') : Grgit.clone(dir: 'so', uri: '[email protected]:Opalo/stackoverflow.git')
  def log = grgit.log()

  log.each { l ->
    logger.lifecycle("ID: $l.id, Author: $l.author")
  }

  grgit.tag.list().each { t ->
    logger.lifecycle("Commit: $t.commit.id, tagger: $t.tagger.email")
  }
}

07-24 12:51