我们正在将Mercurial用于.Net Mvc应用程序。 当我们合并我们的分支时,我们面临的问题是在web.config中我们有一个不同的连接字符串
e.g。
connectionString="data source=Dev1\MSSQLSERVER2012;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf; User ID=sa; Password=pass1
第二个web.config
connectionString="data source=Dev2\MSSQLSERVER2012;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf; User ID=sa; Password=pass2
等
如何在不编辑和重复配置的情况下合并我们的配置。 只是忽略web.config文件没有帮助。 Mercurial是否有“忽略文件部分”选项?
答案 0 :(得分:2)
我有相同的情况:我想阻止传播的本地配置,但我希望能够推送和拉取相同的文件。我没有弄乱补丁,而是按照以下方式进行操作:
让我们说常规发生在分支default
中(可能有多个分支;这只是为了具体)。
default
,没有配置状态。 local
。在此分支中,将所有本地配置提交为一个或多个更改集。 在local
的提示处,创建一个新分支dev
。在这里开发您的新功能。
您的历史现在看起来像这样:
...o--o (default)
\
L--L (local)
\
d--d--d (dev)
当您准备推送时,将整个dev
分支重新绑定到default
的提示:
hg rebase --source "min(branch('dev'))" --dest default --detach
如果您的要素有自己想要保留的分支名称,请将--keepbranches
添加到rebase
选项中。前一棵树变为:
...o--o--d--d--d (default)
\
L--L (local)
您现在可以使用push -r default
发布新功能,而无需拖动本地修订版。 (永远不要从local
合并到 default
;只能从另一种方式合并。如果您在推送时忘记说-r default
,没问题:您的推送被拒绝,因为它会增加一个新头。
仍然在开发服务器上,将重新定位的转换合并到local
:
...o--o--d--d--d (default)
\ \
L--L-----N (local)
您现在可以在dev
之上创建一个新的local
分支,然后继续开发。
这样我的本地配置在source contol下;如果它与新功能冲突,我可以像任何其他合并一样解决它。如果出现问题,我可以更新回已配置的旧版本。
我的案例还涉及修订版管理下的已配置克隆。您可以在this answer.
中查看完整的解决方案答案 1 :(得分:1)
不是Mercurial的答案,但是您无法更改连接字符串以引用localhost
而不是Dev1
和Dev2
?您还需要更改为Windows身份验证,以便您不需要在配置文件中有密码。
这就是我们在团队中的表现,我们从未遇到任何问题。
答案 2 :(得分:1)
使用MQ并创建(一个或两个)修补程序,这些修补程序将相同,两个分支 vanilla web.config共同转换为特定于分支的状态