4

我有一个使用 Subversion 和 VisualSVN 进行源代码控制的项目。由于服务器和开发人员计算机上的 web.config 版本不同,我希望该文件保留在计算机上,但被 Subversion 忽略。我将它添加到 svn:ignore 但它仍然存在(并且仍然有一个红色感叹号,因为我们没有提交它)。

如何在不从文件系统中删除它的情况下安全地从 Subversion 中删除它

谢谢, 阿丁

4

4 回答 4

6

您必须同时执行删除和忽略操作

  • 首先备份您的本地文件(如@ibz 所说)
  • 然后从存储库中删除 web.config。
  • 然后将 web.config 复制回同一文件夹
  • 最后使用 svn:ignore 以便 subversion 不会尝试再次将其添加到存储库

因为我使用 tortoisesvn 我不能真正告诉你必须使用哪些 svn 命令,但是使用 tortoisesvn 它将是:

  • 做备份
  • 右键单击源代码控制下文件夹上的 web.config,选择 TortoiseSVN | 删除
  • 右键单击源代码控制下文件夹上的 web.config,选择 SVN Commit => 之后您会注意到该文件实际上已从文件系统中删除
  • 上移并右键单击源代码管理下的文件夹,选择 TortoiseSVN | 特性
  • 在属性窗口上单击新建 + 属性名称“svn:ignore”;属性值“web.config”。接受更改
  • 提交更改

在我的 .net 项目中,我使用 svn:ignore: bin, obj, *.suo, *.user 包含以下排除项

于 2008-09-11T10:27:02.943 回答
3

理想情况下,您也应该在 SVN 中维护服务器的 web.config 副本的版本。我们通常将生产 web.config 重命名为 web.config.prod(每个环境的副本)并让构建工具选择正确的文件并将其重命名为 web.config,同时打包部署。

于 2009-02-11T21:26:07.633 回答
1
svn rm --force web.config
svn commit

在执行此操作之前请小心备份您的本地副本(web.config),因为它将被删除。

于 2008-09-11T09:40:33.757 回答
0

我已经使用 nant 和 ccnet 解决了这个问题。以下 nant 构建脚本将 web.test.config 文件替换为本地 web.config 文件;

<?xml version="1.0"?>
    <project name="Project1" default="build">
      <target name="init" depends="clean" />
      <target name="clean" />
      <target name="checkout"/>
      <target name="compile"/>
      <target name="deploy"/>
      <target name="test"/>
      <target name="inspect"/>
      <target name="build" depends="init, checkout">
        <call target="compile" />
        <call target="inspect" />
        <call target="test" />
        <call target="deploy" />
      </target>

      <copy file="..\TestDeployments\Project1\Project1.Solution\Project1.Web.UI\web.Test.config" 
          tofile="..\TestDeployments\Project1\Project1.Solution\Project1.Web.UI\web.config" 
          overwrite="true" 
       />
       <delete file="..\TestDeployments\Project1\Project1.Solution\Project1.Web.UI\web.Test.config" />

    </project>

NAnt 复制任务

于 2010-04-21T17:22:29.057 回答