Mercurial:使用通用的web.config

时间:2012-12-17 18:46:12

标签: mercurial web-config

我们正在将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是否有“忽略文件部分”选项?

3 个答案:

答案 0 :(得分:2)

我有相同的情况:我想阻止传播的本地配置,但我希望能够推送和拉取相同的文件。我没有弄乱补丁,而是按照以下方式进行操作:

让我们说常规发生在分支default中(可能有多个分支;这只是为了具体)。

  1. 更新为最新版本的default,没有配置状态。
  2. 创建一个新分支local。在此分支中,将所有本地配置提交为一个或多个更改集。
  3. local的提示处,创建一个新分支dev。在这里开发您的新功能。

    您的历史现在看起来像这样:

    ...o--o      (default)
           \
            L--L    (local)
                \
                 d--d--d  (dev)
    
  4. 当您准备推送时,将整个dev分支重新绑定到default的提示:

    hg rebase --source "min(branch('dev'))" --dest default --detach
    

    如果您的要素有自己想要保留的分支名称,请将--keepbranches添加到rebase选项中。前一棵树变为:

    ...o--o--d--d--d   (default)
           \
            L--L    (local)
    
  5. 您现在可以使用push -r default发布新功能,而无需拖动本地修订版。 (永远不要从local 合并到 default;只能从另一种方式合并。如果您在推送时忘记说-r default,没问题:您的推送被拒绝,因为它会增加一个新头。

  6. 仍然在开发服务器上,将重新定位的转换合并到local

    ...o--o--d--d--d   (default)
           \        \
            L--L-----N    (local)
    
  7. 您现在可以在dev之上创建一个新的local分支,然后继续开发。

  8. 这样我的本地配置在source contol下;如果它与新功能冲突,我可以像任何其他合并一样解决它。如果出现问题,我可以更新回已配置的旧版本。

    我的案例还涉及修订版管理下的已配置克隆。您可以在this answer.

    中查看完整的解决方案

答案 1 :(得分:1)

不是Mercurial的答案,但是您无法更改连接字符串以引用localhost而不是Dev1Dev2?您还需要更改为Windows身份验证,以便您不需要在配置文件中有密码。

这就是我们在团队中的表现,我们从未遇到任何问题。

答案 2 :(得分:1)

使用MQ并创建(一个或两个)修补程序,这些修补程序将相同,两个分支 vanilla web.config共同转换为特定于分支的状态