2016-06-10 47 views
0

无论使用哪种构建/部署过程,有没有一种方法可以显示从哪个分支最新部署的启动gitGit show上一次部署分支

我知道部署和git是无关的,所以我不是在一个命令之后。

为了说明我的意思,想象一下您之前从未参与过的项目,并且您不确定部署了哪个分支。用一系列的git命令找到它不是很好吗?

+0

您至少可以告诉我们您的部署是什么样子。 – PeeHaa

+0

@PeeHaa我是一个普通的命令后,_无论使用的构建/部署过程_ –

+4

构建和部署过程都与git完全无关,所以没有git不会告诉你这一点。然而,一个好的构建过程可能会标记你的构建,所以'git describe'可以[告诉你给定分支中的最新标记](http://stackoverflow.com/questions/1404796/how-to-get-the-latest -tag名,在电流分支功能于GIT)。也许这是一个好的开始? – cmbuckley

回答

1

这是不可能的,如果你想真正假设构建过程,因为这意味着你不能假设构建过程记录任何东西回到你的版本控制系统(例如,你可以有一个部署过程只需在某个地方发布git pull)。

如果您假定您的构建过程是从给定分支构建的(例如master),并且每次构建时为分支添加标签,则git describe master会告诉您master分支中的最新标记。

在这种情况下,这可能只会告诉您关于最新的构建,而不是最新的部署。从这个意义上说,这些标签是候选版本,为了找到最新的部署,你必须做出更多的假设。

我们采用以下策略:

M─┐ [v2] [release] Merge branch 'feature-Y' into release 
│ o [feature-Y] Commit F 
│ o Commit E 
│ o Commit D 
M─┤ [v1] [master] Merge branch 'feature-X' into release 
│ o [feature-X] Commit C 
│ o Commit B 
│ o Commit A 
I─┘ Initial commit 

这告诉你几件事情:

  • 我们只有保持这种应用程序的一个版本。
  • master指向当前生产版本。 (因此v1当前正在运行。)
  • 提交在功能分支中完成,并在准备就绪时合并到release中。
  • 在这里,新的feature-Y是我们的发布候选版本,它的构建过程已被构建并标记为v2
  • 将其部署到预生产环境进行测试。
  • 测试完成后,构建将被提升为活动状态。
  • 一旦所有人都为它在现场工作而感到高兴,master被快速转发到releasegit push origin release:master),现在v2正在运行。
  • 重复!

如果在任何时候发布候选版本没有通过测试,该release分支被抛弃和倒带回到mastergit push -f origin master:release),所以feature-Y是主线不再一部分。然而,v2仍然存在于后代的git中。

+0

这是非常丰富的,谢谢! –