关于开发和发布分支的版本(git-flow)

问题描述 投票:6回答:2

http://nvie.com/posts/a-successful-git-branching-model/上说:

发布分支是从开发分支创建的。例如,说版本1.1.5是当前的生产版本,我们即将发布一个大版本。开发状态已准备就绪,可用于“下一个发行版”,我们已经决定将其变成1.2版(而不是1.1.6或2.0版)。因此,我们分支并给发布分支起一个反映新版本号的名称:

$ git checkout -b release-1.2 develop
Switched to a new branch "release-1.2"
$ ./bump-version.sh 1.2
Files modified successfully, version bumped to 1.2.
$ git commit -a -m "Bumped version number to 1.2"
[release-1.2 74d9424] Bumped version number to 1.2
1 files changed, 1 insertions(+), 1 deletions(-)

现在我对此有很多问题:

  • develop分支仍为1.1.5;什么时候更新?就某个时间而言,在版本号方面,develop分支位于发布分支的“后面”是否有意义?
  • 因此,我增加了版本号之前创建了发行​​分支。如果这样做,在下一个发行版之前,dev和release分支上的版本号相同,我认为这更有意义。 增加版本号之后创建分支的原因是什么?

即使如此,实际上我还是希望我的开发分支具有一个明确指示该版本为开发版本的版本号(因为没有人在某个地方找到所生成的“ myproject-1.2.jar”文件时,应考虑运行该版本生产环境中的jar文件)。因此,从创建发行分支的那一刻起,我希望版本号反映“这是版本1.2.0”和“这是基于1.2的开发版本”。

[不幸的是,在创建发行分支时,每次我尝试合并来自发行分支的更改时,将版本号更改为“ 1.2”以及开发分支上的“ 1.2 + dev”之类的东西都会导致冲突。发展。 您对如何使用git进行这种版本控制有任何建议吗?

git branch versioning release-management
2个回答
3
投票

似乎以下工作流程实际上能够在git中实现所需的版本控制:

  • develop分支上的版本是<last-release>+dev
  • [当从develop分支发布新版本时:
    • 将文件中的版本号更改为<next-release>然后提交。
    • 创建分支releases/v<next-release>来自开发。
    • 在开发中,将文件中的版本号更改为<next-release>+dev然后提交。
    • 发布完成后,合并releases/v<next-release>分支到master并标记它。

这样,

  • 很容易知道当前开发代码是哪个发行版根据,
  • 在基于develop的分支上创建的jar文件很容易检测到作为开发版本,
  • 尽管release分支上的提交仍可以合并回开发分支。

0
投票

因此我们遇到了同样的问题,并提出了三种可能的解决方案:

1。)创建发行分支并将版本在初始提交中进行修改时,然后将develop分支中的版本更改为下一个可能的版本,并将alpha附加到该版本中,例如2.0.0-alpha,以便我们知道这是将来可能的版本的预发行版(alpha表示可能合并了新功能)。如果下一个版本号最终与我们输入的版本号不同,则只需将其更改为正确的版本。

2。)开发分支的最后一个版本后面附加了+development,因此很明显,这是从分支分支和/或从master部署的最新版本的开发版本。但是,我们发现这还不清楚,因为它可能给人留下印象,即它意味着该版本的开发版本……这是不正确的……因为它早于该版本!

3。)我们结合了这两种想法...我们在develop分支上修改了版本,但是我们根据分支名称动态地进行了修改......并且我们使用了更有意义的方式来表明它确实是开发版本,而不是在此阶段发布任何形式的内容,例如在Rails中:

major = 1
minor = 0
patch = 0

version = [major, minor, patch].compact.join('.')

# only release and master branch have a version
# bugfix/hotfix/feature branches are NOT releases and therefore don't have a version!
branch = `git rev-parse --abbrev-ref HEAD`
release = branch.match? /release|master/

VERSION = if release
            version
          else
            "X.X.x-#{branch} (based on: #{version})"
          end

例如,我们部署了一个功能分支进行测试,VERSION为:

X.X.X-feature/rest-api (based on: 1.0.0)

或者如果您不想使用分支名称...

您可以做:

VERSION = if release
            version
          else
            commits = `git rev-list --all --count`
            "rev #{commits} (based on: #{version})"
          end

所以您会获得基于最新发行版本的内部版本号。

© www.soinside.com 2019 - 2024. All rights reserved.