Git log с номерами версий - PullRequest
       8

Git log с номерами версий

0 голосов
/ 11 сентября 2018

Я пытаюсь сгенерировать файл readme, который выглядит следующим образом:

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

Вот как я генерирую свой readmefile с помощью jenkins:

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
    }
}

Это создает readmeфайл в версионной ветке.Моя проблема в том, что я не знаю, как собрать этот файл в качестве примера.Все, что я понял, это как создать файл readme, например:

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

Редактировать: Вот так выглядит мой сетевой график: Network Graph С помощью 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

, который выглядит лучше, но это все еще не то, что мне было нужно.

1 Ответ

0 голосов
/ 11 сентября 2018

Вы можете получить нужные данные в нужной вам последовательности, набрав

git log --date=short --pretty='%d%h %an %ad   %s'

, и вы получите прямой текст с вашим любимым инструментом.Если вам не нужно это слишком красиво, то подойдет трубка через

sed 's/^ *([^)]*)/\n&\n/;1i (not released yet)'

.

...