从 subversion 中删除 web.config(ASP.NET 项目)
-
09-06-2019 - |
题
我有一个使用 Subversion 和 VisualSVN 进行源代码控制的项目。由于服务器和开发人员计算机上的 web.config 版本不同,我希望该文件保留在计算机上但被 Subversion 忽略。我将它添加到 svn:ignore 但它仍然存在(并且仍然有一个红色感叹号,因为我们没有提交它)。
如何安全地将其从 Subversion 中删除而不将其从文件系统中删除
谢谢,阿丁
解决方案
你必须同时执行删除和忽略操作
- 首先备份您的本地文件(就像@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
其他提示
理想情况下,您也应该在 SVN 中维护 web.config 服务器副本的版本。我们通常将生产 web.config 重命名为 web.config.prod(每个环境的副本),并让构建工具选择正确的文件,并在打包部署时将其重命名回 web.config。
svn rm --force web.config
svn commit
在执行此操作之前请小心备份(web.config)的本地副本,因为它将被删除。
我已经使用 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>
不隶属于 StackOverflow