首页 > 解决方案 > 在合并期间保持 package.json 版本完整

问题描述

在将“功能”分支合并到“开发”后,我需要找到一种方法来保持“开发”分支的 package.json 中的“版本”完好无损。我想不出最好的方法来做到这一点。我可以仅使用 .gitlab-ci.yml 或 bash 脚本和 gitlab yml 的组合来执行此操作吗?注意,'feature' 分支在 package.json 中的'version' 总是与开发者的 package.json 不同。

我尝试使用 bash 并为 package.json 'version' 分配一个变量,然后在合并更新 package.json 与 pre-merge 版本之后。似乎不是一个好的解决方案。

标签: gitlab

解决方案


一种方法是版本package.json(忽略它),而是生成它(其中包含正确的值。

生成脚本可以通过以下方式确定签出分支的名称:

branch=$(git rev-parse --symbolic --abbrev-ref HEAD)

这意味着您可以:

  • 版本只是一个模板文件package.json.tpl
  • 以分支命名的版本值文件: version.dev, version.feature: 由于它们不同,因此在合并或切换分支时不会出现合并问题。

最后,您将(在.gitattributes声明中)注册一个内容过滤器驱动程序

弄脏 (图片来自“ Customizing Git - Git Attributes ”,来自“ Pro Git book ”)

smudge与模板文件 ( ) 相关联的脚本将通过在正确的值文件中查找值package.json.tpl来生成(自动打开git checkout)实际文件。 生成的实际文件仍然被忽略(由)。 package.jsonversion.<branch>
package.json.gitignore

请参阅“分支之间的 git smudge/clean filter ”中的完整示例。


推荐阅读