繁体   English   中英

如何将版本控制与仅合并功能结合在一起以掌握git工作流程?

[英]How do I combine versioning with merge-only to master git workflow?

在一个合理的“仅可合并到主站点”的git工作流中(例如gitflow)-所有更改都发生在分支中,而分支又被合并了(也许作为Pull Request的一部分)-如何处理版本控制?

对于标记,我可以轻松地对特定的合并提交进行git tag ,没什么大不了的。

但是许多应用程序框架都依赖于版本文件(例如package.jsongemspec甚至是自定义文件)。

我看到一些选择:

  1. 修改文件作为分支的一部分。 这不是很好,因为您很少事先知道哪个版本会首先合并,特别是对于一个大型团队,其中许多分支并行运行的情况。
  2. 提交修改文件。 这不是很好,因为a-我现在提交至母带,b-自动CI / CD将获取先前的提交并释放它,但是它具有旧版本号,而c-具有2个提交以掌握一个发行版,可以签出错误的版本; 容易的人为错误。
  3. 将版本文件作为模板,然后从git标签自动生成。 这也不是一件npm <anything> ,因为本地工具会npm <anything> (尝试使用无效的package.json运行npm <anything> ),并且存储库不再可以作为原子单元独立运行。

当版本在提交中的一部分文件中时,是否有合理的标准方法来执行此操作?

您可能会采用这样的策略,即人类可以通过仅合并来为master分支做出贡献,并且只有自动化的CI / CD(例如Jenkins)才可以直接在master中更改版本文件的内容。 从CI / CD的角度来看,自动发布过程可能看起来像这样:

  1. 拉大师(大师代码冻结开始)
  2. 运行预发行版本(使用旧版本)
  3. 增加ver文件的内容并提交
  4. 使用新发行版运行发行版构建(与#2的ver文件内容不同)
  5. 将主服务器推送到中央存储库(如果有人违反了主代码冻结 ,则可以使用--force

作为补充,你可以保护文件版本从合并到主服务器更改.gitattributes在版本文件目录与内容verfile merge=ours (见这里

听起来好像想要的是存储库中的模板版本文件,然后使用从存储库中提取的信息将其作为常规构建系统的一部分构建到实际版本文件中。

我建议Autorevision将版本库中的版本信息转换成易于使用的形式。

暂无
暂无

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

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