2013-07-05 18 views
0

我在问自己如何处理以下情况。在Git中处理需要在每个分支不同的文件

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

现在我担心,有人可能会将错误的配置文件合并到其中一个生产分支中。

我该如何处理这些类型的问题?我不想的.gitignore文件和手动处理他们...

问候

回答

0

让我们称之为分支dev的,PROD1和Prod2的。

只要你只合并dev-> prod1和dev-> prod2,你就没有问题,prod1或prod2中对$ file.xml的本地修改将会保持良好,彼此独立。

如果有人合并了prod1-> dev或prod2-> dev,您会在某个时候遇到问题。 prod1-> prod2和prod2-> prod1的相同之处。

我通常在小团队中工作,只是告诉人们不要合并错误的方式,就是这样。如果你在一些需要自动化的企业公司工作,你可能会想出一些强制执行这些事情的钩子,但是我个人认为这太过矫枉过正。

+0

有没有办法阻止合并方向,然后告诉团队中的每个人?我想在分支机构写入权限 – spankmaster79

+0

git的权限系统实际上是不存在的。如果你可以达到克隆你可以做任何你想要的。您可以提供一些钩子来阻止某些事故中的合作用户,并且一些存储库管理软件(如gitolite)可以为您提供一些可以推送到中央存储库的控制权。 – mnagel

0

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

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

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

+0

这就是我可以做的,如果我想手动hanlde他们,但我想他们在混帐。所以我如果文件更新,我不能忘记上传它们... – spankmaster79

+0

@ spankmaster79这是你应该做的。否则我不明白你想从git中得到什么。你需要不同的文件,但git很好地合并差异。你对git有什么样的帮助? – kan

+0

@ spankmaster79 - 可能还不够清楚:contrib文件夹处于版本控制之下。所有配置文件和脚本的“实例”都被签入。 –

0

您可以在回购站上添加一个update挂钩,您不希望其他分支的更改泄漏到prod1prod2。在update挂钩中,您可以检查哪些路径受到推送的影响,如果您不想要那些路径,请拒绝。

该解决方案在实践中防止任何修改这些XML文件,我的猜测是不是正是你想要的(如果文件版本控制之下一定要能够创建他们的新版本)的。为了克服此限制,您可以授予一个用户权限,将更改推送到这些文件。

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

相关问题