繁体   English   中英

Git分支和环境部署跟踪

[英]Git Branching and Environment Deployment Tracking

我们将源代码控制从VSS转移到Git(非常高兴)。 我正在尝试确定Git中的最佳策略,以跟踪我们的代码部署在我们环境中的哪些框中。 到目前为止,我们只专注于我们的GitHub主分支,专门代表生产中的内容。 除非配置管理团队完成记录成功应用于生产的内容,否则此分支上不会发生任何提交。

人们是否也为所有环境创建单独的分支或使用标签? 我已经看到了提出的分支模型,但似乎需要大量不必要的,潜在的痛苦,合并。

我认为标签将是一个很好的解决方案,但人们如何实现这一点? 假设我有3个QA环境,名为QA1,QA2,QA3。 如果我只是将分支原点/ hotfix42中的代码部署到QA2框中,我是否可以使用像“QA2-060911_511pm”这样的标记命名法,告诉我哪个版本的代码在哪个时间部署到哪个框? 但如果我这样做,我的标签数据库将随着时间的推移而增长到数百甚至数千。 因此,如果我想找到部署到QA2的当前版本,如何查询所有标签以找到最新版本? 或....我会不会添加一个名为QA2_Current的额外标签? 但是随着部署的发生,不断不得不继续删除该标签并添加到其他版本?

是否有其他机制可以向提交添加元数据? 例如,我可以在我的提交中添加一个env变量,然后搜索env = QA2的提交吗?

谢谢

经验法则是你将标签用于永远不会改变的东西(比如版本1.0.0总是指向相同的提交),并使用分支来做更改的事情(比如“最新”版本)。

所以我建议将部署到QA2的当前版本由git branch QA2指定,并通过在命令中添加-f来适当移动。 如果您只是将它用作“可移动标签”,则无需进行复杂的合并。

您可能想要合并而不是仅仅移动分支的时间是您需要保留过去部署的历史序列。 在短时间内,您可以使用QA2@{1}QA2@{2}等,但这些最终会被git gc删除。

另外,请记住,合并git比你可能习以为常的痛苦要少几个数量级。 您可能希望尝试对这些模型进行尝试,然后将其解雇为太困难。

要回答有关查找最新标记的问题,如果您使用的是unix,则可以运行此列表以列出按提交日期排序的标记:

git tag | xargs -I@ git log --format=format:"%ci %h @%n" -1 @ | sort

请注意,您还可以使用任何其他refs / sha哈希列表启动管道。 但如果你想列出当地的分支机构,由于领先的明星,你必须做的事情如下:

git branch | sed 's/^\*//' | xargs -I@ git log --format=format:"%ci %h @%n" -1 @ | sort

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM