gitlab - 在合并期间保持 package.json 版本完整
问题描述
在将“功能”分支合并到“开发”后,我需要找到一种方法来保持“开发”分支的 package.json 中的“版本”完好无损。我想不出最好的方法来做到这一点。我可以仅使用 .gitlab-ci.yml 或 bash 脚本和 gitlab yml 的组合来执行此操作吗?注意,'feature' 分支在 package.json 中的'version' 总是与开发者的 package.json 不同。
我尝试使用 bash 并为 package.json 'version' 分配一个变量,然后在合并更新 package.json 与 pre-merge 版本之后。似乎不是一个好的解决方案。
解决方案
一种方法是不版本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.json
version.<branch>
package.json
.gitignore
请参阅“分支之间的 git smudge/clean filter ”中的完整示例。
推荐阅读
- python - 如何在一个列表中而不是在另一个列表中查找字典
- node.js - Passport.js:使用 JWT 策略和现有的 Slack 策略进行客户端身份验证
- json - laravel guzzle 读取数据库而不是 json
- c# - C# Entity Framework .Any() 无法创建“匿名类型”类型的常量值
- java - 如何通过命令行选项使用 Maven Surefire 排除标签?
- sql - 如何在 PostgreSQL 上将所有列转换为正确的大小写/标题大小写?
- laravel - 是否应该在数据库中表示所有模型,或者如果模型没有在数据库中表示,则最好只制作一个控制器?
- angular - Angular 中的单元测试、集成测试和端到端测试有什么区别?
- bash - 更改 txt 文件中的天数
- python - 从 Google Colaboratory 连接到 Mongodb Atlas 时出错