在mercurial和VS中配置文件共享

时间:2012-03-19 12:53:22

标签: visual-studio-2010 mercurial teamcity

我们的项目使用自定义xml配置文件,该文件当前位于项目下作为.xml文件,复制到输出:始终。目前,它存在于存储库中。

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

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

问题在于,有时开发人员忘记在构建时忘记它的配置xml的本地副本,并且他自己的配置文件进入存储库并制动许多东西。有没有办法改进这个模式,所以我们不需要每次提交时都从提交文件中删除配置文件?

3 个答案:

答案 0 :(得分: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"

答案 1 :(得分:0)

  1. 配置在repo中包含TeamCity的数据
  2. 开发人员在MQ堆栈中拥有MQ和补丁,用于将默认xml转换为本地
  3. 更改了基本xml需要编辑(rebase)补丁并删除冲突

答案 2 :(得分:0)

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

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