svn - 从 SubVersion/SmartSVN 中删除文件

标签 svn smartsvn

我使用 SmartSVN 作为 Subversion 的前端。有时,受存储库控制的源文件变得多余 - 我不再需要它。在这种情况下,我想删除它,因为更新工作副本不再从存储库中获取文件。但我仍然希望文件的历史记录(即之前提交的修订)保留在存储库中。

如果我没记错的话,SmartSVN 的 Remove命令删除文件的历史记录(我显然犹豫要验证这一点)。如果我错了,请纠正我。否则:我怎样才能达到预期的效果?

编辑:使用虚拟文件,确认 Remove从 SVN 控件中完全删除文件,并且其历史记录不再可见。所以问题是真实存在的。

最佳答案

Subversion 永远不会从存储库中完全删除文件。事实上,这是一个要求很高的功能。

你做了一个 svn deletesvn rm ,并且该文件不再在工作副本中。然而,它肯定还在那里。可能让您相信该文件已被永久删除的原因是您正在执行以下操作:

 $ svn co http://repo/svn/project
 [...]
 $ cd project
 $ svn del foo.txt
 $ svn commit -m "Removed foo.txt"
 committed version 12345
 $ svn ls http://repo/svn/project/foo.txt
 No such file

这是真的。文件 foo.txt不再是 Subversion 的最新版本。

也许你做了这样的事情:

您知道该文件不在修订版 12345 中,因为您已将其删除。但是,让我们看看修订版 12344。该文件应该仍在该修订版中:
 $ svn ls -r12344 http://repo/svn/project/foo.txt
 No such file

看,修订版不在修订版 12344 中。因此,它已被永久删除。

没那么快,邦基。您请求的是存储库布局的当前修订版中文件的修订版 12344。您需要做的是了解文件修订和存储库修订之间的区别。这叫做revision pegging , 并且可能是 Subversion 中较难的概念之一。

您想看到的是 REPOSITORY 第 12,344 版中的文件。为此,您需要输入 @在存储库 URL 的末尾:
 $ svn ls http://repo/svn/project/foo.txt@12344
 foo.txt

现在,我们可以看到该文件,因为它位于该存储库布局的第 12,344 次修订版中。如果您需要取消删除文件,您始终可以从存储库布局的 Hook 修订版中复制所需文件的修订版:
 $ svn cp -r12344 -m"undeleting foo.txt" \
       http://repo/svn/project/foo.txt@12344 \
       http://repo/svn/project

这将复制文件 foo.txt 的修订版 12344在存储库的第 12,344 次修订到存储库的当前修订版。

查找已删除文件的最简单方法是查看 svn log :
 $ svn log -rHEAD -v http://repo/svn/project/foo.txt
 r12345 | dweintraub | [...]

 Removed foo.txt

 D  /project/foo.txt
 -----------------------------------------------------

我删除了修订版 12345 中的文件 `foo.txt。因此,它在修订版 12344 中仍然存在。很高兴知道我是否需要取消删除该文件。

是的,在这种情况下,我必须请求修改文件和 Subversion 布局可能看起来很愚蠢,因为它们都是相同的。然而,情况并非总是如此。文件会四处移动、复制、删除和取消删除。我想要的文件版本可能与我要查找的存储库版本不同。

关于svn - 从 SubVersion/SmartSVN 中删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13351827/

相关文章:

python - Nautilus 3.30 上的 RabbitVCS 未打开记录器和浏览器

svn - 用于添加新用户并授予所有权限的 Subversion 命令

svn - 有没有办法在为客户端(tortoisesvn)创建新的SVN存储库时自动创建分支、标签和主干文件夹?

svn - 如何在 Eclipse 下在 Subversive 中运行 svn resolve?

svn - 如何强制 SVN 默认将 UTF-16 XML 文件检测为明文文件?

ios - SmartSVN:如何从主干分支出工作副本

SVN 跳过的文件

xcode - 恼人的 svn 问题,其中 svn 声明文件夹处于版本控制之下,但不存在 .svn

git - 本地托管的 GIT 存储库与 SVN 本地存储库类似吗?

svn - Subversion (Tortoise) 中的阁楼在哪里?