在进行生产部署时,我应该用标签标记我的代码还是为生产中的代码创建一个分支?
5 回答
在 TFS 中,我会有一个带有标签的 Release 分支,用于标识要发布到生产环境的特定版本。
这意味着你有其他分支机构我可以建议以下
- 三大分支:Main、Develop 和 Release。
- 您当前火灾的一个修补程序分支。
- 0 到 N 个主要功能分支,以遏制开发中断。
细节
- 主枝
- 包含最新的稳定版本
- 标记/标记每个版本
- 开发分支
- 从主分支
- 大部分工作完成的地方
- 发布前合并回 Main
- 发布分支
- 从以下之一分支:
- 开发分支
- 或主分支(这可能会更好,因为它是“稳定的”)
- 错误修复在这里完成
- 修复测试并发布后,
- 合并到开发分支
- 或合并到主分支,然后转发集成(FI - 这是从父级到子级的合并)到开发
- 标记/标记每个版本或错误修复
- 从以下之一分支:
- 修补程序分支
- 从主要分支
- 合并回 Main
- 前向整合合并到发展
- 用于让 Main 保持“稳定”
- 主要功能分支
- 从开发分支
- 合并回开发
- 用于可能会破坏常规开发路径的主要功能
参考:
- 另一个堆栈溢出问题:when-to-use-a-tag-label-and-when-to-branch特别是 Martin Woodward 的回答
- Eric Sink 的源代码控制方法
- Vincent Driessen
成功的 Git 分支模型
- 这包含一个非常好的分支模型图形
理想情况下,两者兼而有之。
您可能希望拥有一个标签,以便准确了解您为特定版本交付的内容。但是,您可能还想创建一个分支,以便您可以对已发布的内容执行小错误修复并创建新版本。
在实践中,您可以通过以下两种方式之一来处理它:
- 有一个持续的开发时间表,为您的每个生产版本分支:
例子:
------------------------->dev
| | |
| | |
| | |
v1.0 v2.0 v3.0
- 让您的生产版本彼此“级联”:
例子:
---->v1.0---->v2.0---->v3.0
最终,由您决定采用哪种架构,只要它是一致的并且对您有意义。
您可以将两者结合使用。以下是我们在内部为所有项目执行此操作的方式。
对于每个次要和主要版本,我们都有包含文件夹分支和子文件夹的结构。我们还使用我们在各个子文件夹上设置的标签,以便我们可以在未来任何时候轻松地重建任何特定版本。
$\Branches
\2012.01
\2012.02 (branched from 2012.01)
\2012.03 (branched from 2012.02)
\2013.01 (branched from 2012.03)
您还可以查看Visual Studio Team Foundation Server 分支和合并指南了解更多详细信息。
我已经看到两者都完成了,标签更轻量级,对我来说更容易。但是,有人指出,标签可以很容易地删除。除非“销毁”,否则分支实际上不会被删除,从而防止这种情况发生。我不喜欢使用分支的原因是我讨厌隐藏它们,因为我倾向于从根目录获取最新信息,并且不希望所有这些分支填满我的硬盘
作为记录,由于有人向我指出标签被删除,我已经从除管理员和构建服务帐户之外的所有人删除了标签权限,以帮助缓解这种情况。