2015-10-14 55 views
0

场景:
对于每个分支,我使用的是不同的开发数据库。原因是架构可能有所不同,具体取决于分支上的工作。
这是直截了当的,我只是改变了app.config中的连接字符串。
但是,这有问题,那些更改 - 当提交时 - 我执行合并时合并回父分支,有效覆盖该父分支的app.config。
不过,我想在我的存储库中更改app.config,以便我可以简单地签出一个分支并拥有正确的app.config。所以,git update-index --assume-unchanged不是一个解决方案。合并时自动忽略一些更改

回答

0

此问题的解决方案是.gitignore。主机特定设置的环境不应该与源共享存储库。标准方法是将app.properties添加到.gitignore并且永不提交;取而代之的是app.properties.template,其中app.properties可以设置在特定环境中,或者app.properties.default从其中将读取默认值。

+0

感谢您的回答,但绝对不会回答我的问题。正如我所说的,当我切换分支时,我自动希望切换这些设置。如果你知道一个没有提交app.config的方法,那很好,但是交换机必须是自动的。 –

+0

好的,没有得到完整的问题。恕我直言,最好的解决方案仍然是将模式外部化为env变量或脚本,否则你可以通过将配置拆分成两个文件'app.properties'和'schema.properties',在相应的分支中设置所需的模式,使应用程序从这两个文件中读取。这样,您不必在分支之间切换时更改'schema.properties'。在进行合并时,您仍然必须格外小心此文件,以便正确的模式结束于正确的分支。 –

0

我有一个解决方案,但它不是自动的。部分可能是因为git,但也因为忽略这样一个完整的文件不是正确的方法 - 如果你已经做了一些你想合并的app.config的其他变化呢?

让我先看看我是否正确理解你的问题。你在一个分支上开发一些功能,当它完成时被合并到其他的“主”分支中。在完成此项开发时,您可以进行一些临时更改,这些更改在完成时不应包括在内。具体来说,你可以在app.config中提到数据库连接字符串,但是在一般情况下,它可以是任何类似额外的日志记录,跳过调用某些函数等。 您希望将所有内容都检入并存储在git中,以便没有松散的末端与修改后的文件中未检查

假设我的理解是正确的,这是我如何处理这个问题:虽然 发展我只需添加一个给定的前缀和/或后缀(比如====) 到这些提交的提交消息不应该合并, 然后在最后合并之前删除那些提交。

所以,你最终得到一个提交历史看起来做的时候像

* blah blah blah 
* ==== Remove extra extra logging again ==== 
* blah blah blah 
* ==== Extra extra logging ==== 
* blah blah blah 
* blah blah blah 
* ==== Extra logging ==== 
* ==== Skip calling whatever_function ==== 
* blah blah blah 
* ==== Change database connection string ==== 
* blah blah blah 

它是微不足道的,以消除那些暂时改变(这大概可以自动的)。你必须稍微改变你的工作流程,但好处是绝对值得的。

您也可以看到this answer我在那里描述了相同的解决方案,并提供了一些更多的细节和截图。