我的要求是捕获两个标签之间的提交消息,并且我想使用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
对象的列表。然后,您可以仅遍历此对象,然后使用findAll
或grep
查找所需的对象。
说到标签,您可以使用 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")
}
}