我在问自己如何处理以下情况。
我在两个不同的生产系统上有两个不同的分支,配置 xml 文件位于我想要在 Git 中并且需要不同的文件夹中。现在我们总是从一个开发分支合并到两个分支。
现在恐怕有人可能会将错误的配置文件合并到一个生产分支中。
我应该如何处理这些情况?我不想 .gitignore 文件并手动处理它们......
问候
我在问自己如何处理以下情况。
我在两个不同的生产系统上有两个不同的分支,配置 xml 文件位于我想要在 Git 中并且需要不同的文件夹中。现在我们总是从一个开发分支合并到两个分支。
现在恐怕有人可能会将错误的配置文件合并到一个生产分支中。
我应该如何处理这些情况?我不想 .gitignore 文件并手动处理它们......
问候
update
您可以在不希望其他分支的更改泄漏到prod1
and的 repos 上添加一个钩子prod2
。在update
钩子中,您可以检查哪些路径受到推送的影响,如果您不希望这些路径被触及,则拒绝它。
该解决方案实际上将防止对这些 xml 文件进行任何修改,我猜这并不是您想要的(如果文件受版本控制,您肯定希望能够创建它们的新版本)。为了克服此限制,您可以授予一个用户将更改推送到这些文件的权限。
Git Book 包含如何在 Git 存储库上创建挂钩的示例update
,包括如何获取用户名(用于 SSH 和其他类型的访问)。查看链接以获取有关如何实际编写钩子的更多信息。请记住,挂钩只是可执行文件(或脚本),因此您实际上可以用您选择的语言编写它们。
我通常将依赖于特定环境的配置文件保存在单独的“contrib”文件夹中。所以我可以让它们受到版本控制,但我必须将它们复制到预期的位置(手动)。我通常将“设置”脚本添加到 contrib 文件夹:
./
contrib/
prod1/
application.config
prepare.sh
prod2/
application.config
prepare.bat
team1/
application.config
prepare.bat
team2/
application.config
prepare.sh
该示例假定生产系统使用不同的操作系统并需要不同的“准备”脚本(复制配置文件和做其他事情),并且具有不同开发环境的团队在同一个项目上工作。
让我们调用分支 dev、prod1 和 prod2。
只要您只合并 dev->prod1 和 dev->prod2 就不会出现问题,并且 prod1 或 prod2 中对 $file.xml 的本地更改将保持良好且彼此独立。
如果有人合并 prod1->dev 或 prod2->dev 你会在某个时候遇到问题。prod1->prod2 和 prod2->prod1 也是如此。
我通常在小团队中工作,只是告诉人们不要以错误的方式进行合并,仅此而已。如果您在一些需要自动化此类事情的企业公司工作,您可以想出一些强制执行此操作的钩子,但我个人认为这是矫枉过正。