【问题标题】:Config file sharing in mercurial and VS在 mercurial 和 VS 中配置文件共享
【发布时间】:2012-04-03 23:04:09
【问题描述】:

我们的项目使用自定义 xml 配置文件,该文件当前位于项目下作为 .xml 文件,并带有 Copy to output: always。目前,它存在于存储库中。

问题是每个开发人员都使用自己的数据库(以及每个自己的配置文件),所以理想情况下我们需要有不同的配置文件,并且我们不想将它们提交到外部存储库。

有时配置文件的格式会改变,我们都需要更新它。我们还有一个构建服务器,它被配置为在从存储库更新源代码并构建它之前清理文件夹,因此默认文件(为构建服务器配置)应该包含在存储库中。

问题在于,有时开发人员在构建时忘记检查配置 xml 的本地副本,而他自己的配置文件进入存储库并阻止了很多事情。有什么办法可以改进这个架构,这样我们每次提交时就不需要从提交文件中删除配置文件了吗?

【问题讨论】:

    标签: visual-studio-2010 mercurial teamcity


    【解决方案1】:

    我的解决方案是从 VCS 中排除 app.config 以防止意外提交。我们创建了一个已签入的 app.example.config。预构建事件验证 app.config 文件是否存在,以及它是否在编译代码库之前没有将 .template 复制到 .config 文件。这可以确保构建服务器有一个工作配置文件,其中包含所有环境的基本设置。

    项目配置中的 PRe-build 事件示例:

    REM copy .example files to .config files if needed
    IF NOT EXIST "$(projectDir)\App.Config" IF EXIST "$(projectDir)\app.example.config" COPY "$(projectDir)\app.example.config" "$(projectDir)\App.Config"
    IF NOT EXIST "$(projectDir)\Web.Config" IF EXIST "$(projectDir)\Web.example.config" COPY "$(projectDir)\Web.example.config" "$(projectDir)\Web.Config"
    IF NOT EXIST "$(projectDir)\ConnectionStrings.Config" IF EXIST "$(projectDir)\ConnectionStrings.example.config" COPY "$(projectDir)\ConnectionStrings.example.config" "$(projectDir)\ConnectionStrings.Config"
    IF NOT EXIST "$(projectDir)\Local.Config" IF EXIST "$(projectDir)\Local.example.config" COPY "$(projectDir)\Local.example.config" "$(projectDir)\Local.Config"
    

    【讨论】:

    • 能否请您发布此预构建活动?我对 msbuild 任务不是很熟悉
    • 我不太希望看到,但它确实有效(我以为你已经使用 任务来复制文件)。谢谢!
    【解决方案2】:
    1. repo 中的配置包含 TeamCity 的数据
    2. 开发人员在 MQ 堆栈中有 MQ 和补丁,用于将默认 xml 转换为本地
    3. 更改的基础 xml 需要编辑(变基)补丁并消除冲突

    【讨论】:

      【解决方案3】:

      这是另一个类似于accepted one by Mark 的答案,但使用了.csproj 文件中的<Copy> 任务,您显然正在寻找它:

      how to ignore files in kiln/mercurial using tortoise hg "that are part of the repository"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多