Как автоматически увеличить версию патча после исправления с помощью gitversion - PullRequest
0 голосов
/ 08 мая 2019

Резюме

Я настраиваю новый проект и хотел использовать GitVersion для расчета текущей версии моего приложения.Мне нужно семантическое управление версиями с помощью MAJOR.MINOR.PATCH, где значения MAJOR и MINOR увеличиваются с именем ветки релиза, а PATCH увеличивается при каждом исправлении ошибки или слиянии исправлений.

В данный момент я пытаюсь внедрить GitFlow вмоя стратегия ветвления, но я дам вам объяснение того, что я делаю.

  1. Вся разработка выполняется на development ветке (создание функции / * ветвь и слияние обратно в разработка .
  2. Когда я хочу создать релиз, я создаю release / [версия] ветвь из development
  3. Когда я нахожу в выпуске ошибку, я создаю ветку bugfix / * и объединяю ее с release / [version] , когда закончите.
  4. Если больше ошибок не найдено, release / [версия] будет объединена в master и помечена с правильной версией.

Проблема находится на шаге 3Когда я например на релизы / 0.1.0 GitVersion не будет вклперезапустите версию PATCH после исправления / * слияния.Он просто остается на 0.1.0 вместо требуемого 0.1.1.Это увеличивает количество коммитов!

Шаги, предпринятые до сих пор

В данный момент я использую следующий файл gitversion.yml (см. Следующий заголовок).Который включает ветку исправления, которая должна увеличивать PATCH.По какой-то причине после создания ветки bugfix / * она не увеличивает PATCH, когда вы запускаете GitVersion в ветке bugfix, поэтому я думаю, что здесь что-то упущено.

Единственное, что работает - это установка тега для последнего коммита в ветке bugfix / * на новую версию (тест 0.1.1).Но из-за того, что GitVersion вычисляет версию 0.1.0 в ветке исправлений, я не могу автоматически обновить PATCH и добавить необходимый тег 0.1.1-test в коммит.

Я также думал, что GitVersion увеличит версиюкогда у вас есть слияние обратно в ветку релиза.Но и этого не происходит, даже когда я установил инкремент на Patch.Так что и здесь, я думаю, я что-то упустил, или я просто хочу что-то, для чего GitVersion не создан.

gitversion.yml

assembly-versioning-scheme: MajorMinorPatch
mode: ContinuousDeployment
branches:
  develop:
    tag: ''
  feature:
    tag: ''
  release:
    tag: test
    increment: Patch
    tracks-release-branches: true
    source-branches:
    - develop
    - bugfix
  bugfix:
    tag: ''
    increment: Patch
    prevent-increment-of-merged-branch-version: false
    regex: bugfix(es)?[/-]
    source-branches:
    - release
ignore:
  sha: []

Ожидаемый результат

Я бы хотел увеличить значение PATCH при объединении ветки bugfix / * обратно в мою ветку release / [version] .

Пример:

7f8ef13 34 minutes ago  (HEAD -> releases/0.1.0) [3]
|\
| * 3363677 34 minutes ago  (bugfix/TE-01) [2]
|/
* ac22ccb 36 minutes ago  (tag: 0.1.0-test, master, develop) [1]

[1] На этом этапе я создал ветку Releases / 0.1.0, поэтому GitVersion должен вычислять 0.1.0 (что работает!)

[2] Здесь версия на самом деле не имеет значениятак что он может оставаться 0.1.0-bug

[3] Здесь версию нужно будет увеличить до 0.1.1, потому что у нас было исправление слияния.(этого не происходит!).На данный момент он остается 0.1.0, но увеличивает количество коммитов.Таким образом, он перейдет с 0.1.0-test.0 на 0.1.0-test.2 между [1] и [3].

Может быть, я пытаюсь сделать что-то, что даже невозможно, я действительноне знаюТак что, если у кого-то есть идея, не стесняйтесь отвечать:)

Я также знаю, что GitFlow по умолчанию не имеет ветвей исправления ошибок.Но я думаю, что это странная идея - исправлять ошибки непосредственно в ветке релиза.Особенно, когда вы работаете в большой команде.Вот почему я пытаюсь создать поток исправлений ошибок.

Полный вывод gitversion -diag

C:\Testig gitversion>gitversion -diag
INFO [05/08/19 10:38:53:79] Dumping commit graph:
INFO [05/08/19 10:38:53:90] *   7f8ef13 49 minutes ago  (HEAD -> releases/0.1.0)
|\
| * 3363677 49 minutes ago  (bugfix/TE-01)
|/
* ac22ccb 50 minutes ago  (tag: 0.1.0-test, master, develop)

INFO [05/08/19 10:38:53:90] Working directory: C:\Testig gitversion
INFO [05/08/19 10:38:53:91] IsDynamicGitRepository: False
INFO [05/08/19 10:38:53:93] Returning Project Root from DotGitDirectory: C:\Testig gitversion\.git - C:\Testig gitversion
INFO [05/08/19 10:38:53:94] Running on Windows.
INFO [05/08/19 10:38:53:94] IsDynamicGitRepository: False
INFO [05/08/19 10:38:53:94] Returning Project Root from DotGitDirectory: C:\Testig gitversion\.git - C:\Testig gitversion
INFO [05/08/19 10:38:53:94] Project root is: C:\Testig gitversion
INFO [05/08/19 10:38:53:94] DotGit directory is: C:\Testig gitversion\.git
INFO [05/08/19 10:38:53:95] IsDynamicGitRepository: False
INFO [05/08/19 10:38:53:95] Returning Project Root from DotGitDirectory: C:\Testig gitversion\.git - C:\Testig gitversion
INFO [05/08/19 10:38:53:98] IsDynamicGitRepository: False
INFO [05/08/19 10:38:53:98] Returning Project Root from DotGitDirectory: C:\Testig gitversion\.git - C:\Testig gitversion
INFO [05/08/19 10:38:54:07] Using latest commit on specified branch
INFO [05/08/19 10:38:54:08] Running against branch: releases/0.1.0 (7f8ef13e5f43d3827d30a25f936424210cefb2c8)
INFO [05/08/19 10:38:54:09] Begin: Calculating base versions
  INFO [05/08/19 10:38:54:10] Fallback base version: 0.1.0 with commit count source ac22ccb4dd8937a5ec46ad1504281aee490b4411 (Incremented: None)
  INFO [05/08/19 10:38:54:15] Git tag '0.1.0-test': 0.1.0-test with commit count source ac22ccb4dd8937a5ec46ad1504281aee490b4411 (Incremented: 0.1.0-test)
  INFO [05/08/19 10:38:54:17] Begin: Finding branch source of 'releases/0.1.0'
    INFO [05/08/19 10:38:54:18] Begin: Finding merge base between 'releases/0.1.0' and 'develop'.
      INFO [05/08/19 10:38:54:19] Found merge base of ac22ccb4dd8937a5ec46ad1504281aee490b4411
      INFO [05/08/19 10:38:54:19] Merge base of releases/0.1.0' and 'develop is ac22ccb4dd8937a5ec46ad1504281aee490b4411
    INFO [05/08/19 10:38:54:19] End: Finding merge base between 'releases/0.1.0' and 'develop'. (Took: 5.00ms)
    INFO [05/08/19 10:38:54:19] Begin: Finding merge base between 'releases/0.1.0' and 'master'.
      INFO [05/08/19 10:38:54:19] Found merge base of ac22ccb4dd8937a5ec46ad1504281aee490b4411
      INFO [05/08/19 10:38:54:19] Merge base of releases/0.1.0' and 'master is ac22ccb4dd8937a5ec46ad1504281aee490b4411
    INFO [05/08/19 10:38:54:19] End: Finding merge base between 'releases/0.1.0' and 'master'. (Took: 0.96ms)
    INFO [05/08/19 10:38:54:19] Begin: Finding merge base between 'releases/0.1.0' and 'releases/0.1.0'.
      INFO [05/08/19 10:38:54:19] Found merge base of 7f8ef13e5f43d3827d30a25f936424210cefb2c8
      INFO [05/08/19 10:38:54:19] Merge base of releases/0.1.0' and 'releases/0.1.0 is 7f8ef13e5f43d3827d30a25f936424210cefb2c8
    INFO [05/08/19 10:38:54:19] End: Finding merge base between 'releases/0.1.0' and 'releases/0.1.0'. (Took: 1.00ms)
    INFO [05/08/19 10:38:54:20] Multiple source branches have been found, picking the first one (develop).
This may result in incorrect commit counting.
Options were:
 develop, master
  INFO [05/08/19 10:38:54:25] End: Finding branch source of 'releases/0.1.0' (Took: 85.80ms)
  INFO [05/08/19 10:38:54:33] Version in branch name: 0.1.0 with commit count source ac22ccb4dd8937a5ec46ad1504281aee490b4411 (Incremented: None)
  INFO [05/08/19 10:38:54:35] Begin: Finding merge base between 'releases/0.1.0' and 'releases/0.1.0'.
    INFO [05/08/19 10:38:54:38] Found merge base of 7f8ef13e5f43d3827d30a25f936424210cefb2c8
    INFO [05/08/19 10:38:54:42] Merge base of releases/0.1.0' and 'releases/0.1.0 is 7f8ef13e5f43d3827d30a25f936424210cefb2c8
  INFO [05/08/19 10:38:54:45] End: Finding merge base between 'releases/0.1.0' and 'releases/0.1.0'. (Took: 106.84ms)
  INFO [05/08/19 10:38:54:47] Git tag '0.1.0-test': 0.1.0-test with commit count source ac22ccb4dd8937a5ec46ad1504281aee490b4411 (Incremented: 0.1.0-test)
  INFO [05/08/19 10:38:54:49] Found multiple base versions which will produce the same SemVer (0.1.0), taking oldest source for commit counting (Version in branch name)
  INFO [05/08/19 10:38:54:53] Base version used: Version in branch name: 0.1.0 with commit count source ac22ccb4dd8937a5ec46ad1504281aee490b4411 (Incremented: None)
INFO [05/08/19 10:38:54:53] End: Calculating base versions (Took: 448.82ms)
INFO [05/08/19 10:38:54:58] Skipping version increment
INFO [05/08/19 10:38:54:60] 2 commits found between ac22ccb4dd8937a5ec46ad1504281aee490b4411 and 7f8ef13e5f43d3827d30a25f936424210cefb2c8
INFO [05/08/19 10:38:54:64] Begin: Getting version tags from branch 'refs/heads/releases/0.1.0'.
INFO [05/08/19 10:38:54:68] End: Getting version tags from branch 'refs/heads/releases/0.1.0'. (Took: 46.60ms)

В конце вы можете увидеть, что он пропускает приращение версии.Но я понятия не имею, почему.

...