我有2个环境和2个分支,测试和生产。测试分支(Angular)上的代码与生产分支的99%相同,但是我需要维护的生产中存在一些差异,例如删除“注册”和“创建新”按钮。直播网站仍处于测试阶段。但我100%在版本控制中需要这些视图,我需要在测试分支/环境中使用它们。
有没有办法维护2个稍微不同的文件,即使我合并,而不使用.gitignore?就像我需要.gitignore只需几行代码!
我当前的方法是简单地记住更改,并在每次合并到生产分支时重新执行它们,然后在切换回测试分支时撤消更改。虽然它有点烦人!
我可以设置一个环境var来切换代码行,当然,任何人都可以在(客户端)代码中看到这个并使用我隐藏的链接和按钮。
我的部署过程如下:
因此环境变量和构建脚本可以在代码行或EBS阶段运行。
任何建议表示赞赏。
答案 0 :(得分:3)
有没有办法维护2个稍微不同的文件,即使我合并,而不使用.gitignore?就像我需要.gitignore只需几行代码!
你有一个隐含的前提,.gitignore
会帮助你。它不会。 仅事物.gitignore
所做的是保持未跟踪的文件未被跟踪(默认情况下)。它不会影响合并。
所以让我们删除它并解决正确的问题:
即使合并
,有没有办法维护2个略有不同的文件
出于所有意图和目的,没有。你可以试试,但是对于潜在的问题有更好的解决方案。
您需要做的是,为合并定义一个方向,然后在合并的“目标”侧引入差异。但是接下来(1)每次合并受影响的文件时,你都会面临不必要的合并冲突的可能性,并且(2)你在合并时有一个非常严格的限制规则。
(到最后一点:假设你决定“总是合并为生产”。这听起来太不同于“合并向主人”的gitflow规则......但是修补程序怎么样? ?即使从生产到测试的间接合并也会破坏这种方法,因此创建修补程序的过程会变得更加复杂。)
更好的解决方案是使用单个代码库,但使用特定于环境的配置来确定表达哪种行为。配置可以由构建过程管理,也可以在运行时直接从环境中获取。
答案 1 :(得分:0)
我的建议是在一小组文件中隔离特定于分支的代码,然后在生产和开发分支之间切换,使用配置文件中的设置(而不是环境变量)。