我正在尝试生成一个如下的自述文件:
not released yet
30c9474 myname 2018-08-23 Feature 1337
v1.0.76
420368f myname 2018-08-22 Changed Jenkinsfile.groovy again
v1.0.75
be05539 myname 2018-08-16 Feature 2833
838c158 myname 2018-08-16 Fixed bug 9128
6fa061a myname 2018-08-14 Feature 8832
v1.0.74
21903f2 myname 2018-08-11 Some stuff
57f1a2f myname 2018-08-05 Changed Jenkinsfile.groovy
这是我目前使用jenkins生成我的readmefile的方式:
node('master') {
def artifactConfig = [
version: '1.0.'+env.BUILD_NUMBER,
]
try {
// ######################################## Commit stage ######################################
stage('Create Changelog stage') {
// needs to be checked out again, because by default on master the sources are checkout out to ${WORKSPACE}@script in scripted pipeline
checkout scm
// the Changelog will be created here
sh 'git log $(git describe --tags --abbrev=0)..HEAD --pretty=format:"%d%h%x09%an%x09%ad%x09%s" --date=short --all | sed "s/^ *([^)]*)/\\n&\\n/;1i (not released yet)" > releasenotes.md'
sh 'git config --global --unset-all core.editor && git config --global core.editor $(which vim)'
sh 'git add releasenotes.md &&' +
'git tag -a version/' + artifactConfig.version + ' -m "Version version/' + artifactConfig.version + ' created" &&' +
'git commit -C HEAD --amend --no-edit &&' +
'git push -f origin version/' + artifactConfig.version
}
} catch (exception) {
currentBuild.result = 'FAILED'
throw exception
}
}
这将在版本分支中创建自述文件。 我的问题是,我不知道如何将该文件放在一起作为示例。我只知道如何生成一个自述文件,如:
30c9474 myname 2018-08-23 Feature 1337
420368f myname 2018-08-22 Changed Jenkinsfile.groovy again
be05539 myname 2018-08-16 Feature 2833
838c158 myname 2018-08-16 Fixed bug 9128
6fa061a myname 2018-08-14 Feature 8832
21903f2 myname 2018-08-11 Some stuff
57f1a2f myname 2018-08-05 Changed Jenkinsfile.groovy
编辑: 这是我的网络图的样子: 借助jthill,我将git日志行更改为:
sh 'git log $(git describe --tags --abbrev=0)..HEAD --pretty=format:"%h%x09%an%x09%ad%x09%s" --date=short | sed "s/^ *([^)]*)/\\n&\\n/;1i (not released yet)" > releasenotes.md'
但结果现在看起来像这样:
(not released yet)
30c9474 myname 2018-08-23 Feature 1337
420368f myname 2018-08-22 Changed Jenkinsfile.groovy again
be05539 myname 2018-08-16 Feature 2833
838c158 myname 2018-08-16 Fixed bug 9128
6fa061a myname 2018-08-14 Feature 8832
21903f2 myname 2018-08-11 Some stuff
57f1a2f myname 2018-08-05 Changed Jenkinsfile.groovy
看起来更好,但仍然不是我所需要的。
答案 0 :(得分:1)
您可以按照所需的顺序获取所需的数据
@XmlMixed
private List<String > freeText;
@XmlElement( name = "DAY" )
private List<ReceivedBaseDayInfo> diaList;
从那里开始,使用您喜欢的工具进行简单的文本搜索。如果您不需要的太漂亮,请通过管道
git log --date=short --pretty='%d%h %an %ad %s'
会的。
答案 1 :(得分:1)
另一种方法是在 git log --format=...
本身中包含该标签/版本号。
Git 2.32(2021 年第二季度,7 年后)是可能的,“git log --format=...
”(man)“学习了“%(describe)
”占位符.
参见 commit 9609972、commit 273c990、commit 09fe8ca(2021 年 2 月 28 日)和 commit b081547、commit 15ae82d(2021 年 2 月 14 日)由 René Scharfe (rscharfe
) .
(由 Junio C Hamano -- gitster
-- 于 commit 25f9326 合并,2021 年 3 月 22 日)
pretty
:添加 %(describe)建议人:Eli Schwartz
签字人:René Scharfe
为描述输出添加格式占位符。
通过实际调用 git describe
(man) 来实现,这很简单并且保证了正确性。
它旨在与具有 $Format:...$
和 export-subst
属性的文件中的 git archive
一起使用。
它也可以与 git log
(man) 等一起使用,即使由于每次提交的分叉,这会很慢。
还有:
<块引用>pretty
:向 %(describe)
签字人:René Scharfe
<块引用>允许使用匹配和排除选项限制占位符 %(describe)
使用的标签。
例如
以下命令使用官方版本标签描述当前提交,不包括候选版本:
$ git log -1 --format='%(describe:match=v[0-9]*,exclude=*rc*)'
pretty-formats
现在包含在其 man page 中:
'%(describe[:options])':: 人类可读的名称,例如
git describe
;空字符串
不可描述的提交。 describe
字符串
后面可以跟一个冒号和零个或多个
逗号分隔的选项。
match=<pattern>
':只考虑匹配给定的标签
glob(7)
模式,不包括“refs/tags/”前缀。exclude=<pattern>
':不考虑匹配给定的标签
glob(7)
模式,不包括“refs/tags/
”前缀。警告:
<块引用>pretty
:文档多个 %(describe) 不一致报告人:Ævar Arnfjörð Bjarmason
签字人:René Scharfe
使用单独的 git describe
(man) 调用扩展每个 %(describe)
占位符。
它们的输出取决于当时存在的标签,因此没有一致性保证。
记录这个事实。
pretty-formats
现在包含在其 man page 中:
添加或删除标签时,描述可能不一致 同时。