如何将版本控制与“仅合并”结合起来以掌握git工作流?
在一个合理的“只合并到主控”git工作流(例如gitflow)中——所有更改都发生在分支中,而分支又会被合并(可能是作为拉请求的一部分)——我如何处理版本控制 对于标记,我可以轻松地如何将版本控制与“仅合并”结合起来以掌握git工作流?,git,versioning,git-flow,Git,Versioning,Git Flow,在一个合理的“只合并到主控”git工作流(例如gitflow)中——所有更改都发生在分支中,而分支又会被合并(可能是作为拉请求的一部分)——我如何处理版本控制 对于标记,我可以轻松地git标记特定的合并提交,没有什么大不了的 但许多应用程序框架依赖于版本文件(例如package.json或gempec甚至自定义文件) 我看到一些选择: 作为分支的一部分修改文件。这并不好,因为您很少提前知道哪个版本将首先合并,尤其是在一个拥有多个分支并行运行的大型团队中 提交后修改文件。这不是很好,因为a-I现在
git标记
特定的合并提交,没有什么大不了的
但许多应用程序框架依赖于版本文件(例如package.json
或gempec
甚至自定义文件)
我看到一些选择:
包运行npm
。json
),并且repo不再能够作为一个原子单元独立存在当版本控制在作为提交一部分的文件中时,是否有一种合理的标准方法来执行此操作 您可能会采用一种策略,即人类可以仅通过合并向主分支贡献,并且只有自动化CI/CD(例如Jenkins)可以直接在主分支中更改版本文件的内容。从CI/CD的角度来看,自动发布过程可能如下所示:
--force
)此外,您还可以使用ver file目录中的
.gittributes
和内容verfile merge=ours
(请参阅)保护ver file,使其不受合并到主分支的影响。您可以采用一种策略,即人类可以仅通过合并和自动CI/CD(例如Jenkins)对主分支作出贡献可以直接在master中更改版本文件的内容。从CI/CD的角度来看,自动发布过程可能如下所示:
--force
)此外,您还可以使用ver file目录中的
.gittributes
和内容verfile merge=ours
(请参阅)来保护ver文件不被合并到主控更改听起来,我们需要的是存储库中的模板版本文件,然后将其作为正常构建系统的一部分构建到实际版本文件中,并从存储库中提取信息
我建议将存储库中的版本信息转换为易于使用的格式。听起来,我们需要的是存储库中的模板版本文件,然后将其作为正常构建系统的一部分构建到实际版本文件中,并从存储库中提取信息
我建议将存储库中的版本信息转换成易于使用的格式。我已经拥有了大部分信息,谢谢@IrLED。您建议的关键是仅通过CI/CD更改版本控制文件?这方面的挑战在于,其中往往有很多内容,而不仅仅是版本。想想
package.json
或Gemfile
。在正常的开发过程中,大部分内容都需要合理地更改;只有一个字段需要控制。>您建议的关键是仅通过CI/CD更改版本控制文件?是的,这就是重点。要将受保护的部分与公共可用部分分开,您可以运行package.json
-从ver文件中插入一个值的某种预处理。我需要仔细考虑一下。它需要一些相当脆弱的逻辑——每种文件类型也需要一些逻辑——以允许用户更改除这一行之外的所有内容。对于JSON,在预处理过程中,您可以反序列化ruby中的包。JSON
(我假设您使用它,通过提及Gemfile
),无条件覆盖/添加“版本”:“1.0.0”
在该结构中并将其序列化=>用户可以自由更改package.json
他们想要的方式,但在发布过程中,“version”字段将具有protected ver.file的值这是一种有趣的方法。我很惊讶我没有看到这种大规模的解决方案,因为只有主合并的git流很受欢迎。您建议的关键是仅通过CI/CD更改版本控制文件?这方面的挑战在于,其中往往有很多内容,而不仅仅是版本。想想package.json
或Gemfile
。在正常的开发过程中,大部分内容都需要合理地更改;只有一个字段需要控制。>您建议的关键是仅通过CI/CD更改版本控制文件?是的,这就是重点。要将受保护的部分与公共可用部分分开,您可以运行package.json
-从ver文件中插入一个值的某种预处理。我需要仔细考虑一下。它需要一些相当脆弱的逻辑——每种文件类型也需要一些逻辑——以允许用户更改除这一行之外的所有内容。对于JSON,在预处理过程中,您可以在ruby中反序列化package.JSON
(我假设您使用它,通过提及Gemfile)