0

我在问自己如何处理以下情况。

我在两个不同的生产系统上有两个不同的分支,配置 xml 文件位于我想要在 Git 中并且需要不同的文件夹中。现在我们总是从一个开发分支合并到两个分支。

现在恐怕有人可能会将错误的配置文件合并到一个生产分支中。

我应该如何处理这些情况?我不想 .gitignore 文件并手动处理它们......

问候

4

3 回答 3

0

update您可以在不希望其他分支的更改泄漏到prod1and的 repos 上添加一个钩子prod2。在update钩子中,您可以检查哪些路径受到推送的影响,如果您不希望这些路径被触及,则拒绝它。

该解决方案实际上将防止对这些 xml 文件进行任何修改,我猜这并不是您想要的(如果文件受版本控制,您肯定希望能够创建它们的新版本)。为了克服此限制,您可以授予一个用户将更改推送到这些文件的权限。

Git Book 包含如何在 Git 存储库上创建挂钩的示例update,包括如何获取用户名(用于 SSH 和其他类型的访问)。查看链接以获取有关如何实际编写钩子的更多信息。请记住,挂钩只是可执行文件(或脚本),因此您实际上可以用您选择的语言编写它们。

于 2013-07-05T12:44:00.367 回答
0

我通常将依赖于特定环境的配置文件保存在单独的“contrib”文件夹中。所以我可以让它们受到版本控制,但我必须将它们复制到预期的位置(手动)。我通常将“设置”脚本添加到 contrib 文件夹:

./
  contrib/
          prod1/
                application.config
                prepare.sh
          prod2/
                application.config
                prepare.bat
          team1/
                application.config
                prepare.bat
          team2/
                application.config
                prepare.sh

该示例假定生产系统使用不同的操作系统并需要不同的“准备”脚本(复制配置文件和做其他事情),并且具有不同开发环境的团队在同一个项目上工作。

于 2013-07-05T10:09:41.703 回答
0

让我们调用分支 dev、prod1 和 prod2。

只要您只合并 dev->prod1 和 dev->prod2 就不会出现问题,并且 prod1 或 prod2 中对 $file.xml 的本地更改将保持良好且彼此独立。

如果有人合并 prod1->dev 或 prod2->dev 你会在某个时候遇到问题。prod1->prod2 和 prod2->prod1 也是如此。

我通常在小团队中工作,只是告诉人们不要以错误的方式进行合并,仅此而已。如果您在一些需要自动化此类事情的企业公司工作,您可以想出一些强制执行此操作的钩子,但我个人认为这是矫枉过正。

于 2013-07-05T09:54:55.857 回答