我们的项目使用自定义xml配置文件,该文件当前位于项目下作为.xml文件,复制到输出:始终。目前,它存在于存储库中。
问题是每个开发人员都使用每个自己的数据库(以及每个自己的配置文件),所以理想情况下我们需要有不同的配置文件,我们不希望将它们提交到外部存储库。
有时配置文件的格式会发生变化,我们所有人都需要更新它。此外,我们还有一个构建服务器,配置为在从存储库更新源并构建它之前清理该文件夹,因此默认文件(为构建服务器配置)应该包含在存储库中。
问题在于,有时开发人员忘记在构建时忘记它的配置xml的本地副本,并且他自己的配置文件进入存储库并制动许多东西。有没有办法改进这个模式,所以我们不需要每次提交时都从提交文件中删除配置文件?
答案 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)
答案 2 :(得分:0)
这是另一个类似于accepted one by Mark的答案,但使用<Copy>
文件中的.csproj
任务,您显然正在寻找:
how to ignore files in kiln/mercurial using tortoise hg "that are part of the repository"