首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从SubVersion/SmartSVN中删除文件

从SubVersion/SmartSVN中删除文件
EN

Stack Overflow用户
提问于 2012-11-12 21:26:43
回答 3查看 5.5K关注 0票数 6

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

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-13 00:46:15

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

您可以执行svn deletesvn rm,并且文件不再在工作副本中。但是,它肯定还在那里。让您相信文件已被永久删除的可能是,您所做的事情如下:

代码语言:javascript
复制
 $ 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版。该修订版中的文件应该仍然存在:

代码语言:javascript
复制
 $ svn ls -r12344 http://repo/svn/project/foo.txt
 No such file

听着,修订版不在第12344版。因此,它已被永久删除。

别那么快邦奇。您所要求的是存储库布局当前修订版中文件的修订12344。您需要做的是理解文件修订和存储库修订之间的区别。这被称为修正挂接,它可能是Subversion中比较困难的概念之一。

您想要看到的是存储库第12,344次修订版中的文件。为此,您可以在存储库URL的末尾放置一个@

代码语言:javascript
复制
 $ svn ls http://repo/svn/project/foo.txt@12344
 foo.txt

现在,我们可以看到该文件,因为它位于该存储库布局的第12,344次修订版中。如果需要取消删除文件,则始终可以从存储库布局的固定修订中复制所需文件的修订:

代码语言:javascript
复制
 $ svn cp -r12344 -m"undeleting foo.txt" \
       http://repo/svn/project/foo.txt@12344 \
       http://repo/svn/project

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

查找已删除文件的最简单方法是查看svn log

代码语言:javascript
复制
 $ svn log -rHEAD -v http://repo/svn/project/foo.txt
 r12345 | dweintraub | [...]

 Removed foo.txt

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

我删除了12345版中的文件`foo.txt。因此,它仍然存在于第12344版中。很高兴知道我是否需要删除这个文件。

是的,在这种情况下,我不得不请求修改文件和Subversion布局似乎很傻,因为它们都是相同的。然而,情况并不总是如此。文件被移动并复制、删除和取消删除。我想要的文件的版本可能与我想要的存储库版本不一样。

票数 5
EN

Stack Overflow用户

发布于 2015-04-27 13:26:02

在SmartSVN中:

选择“文件/文件夹”->右键单击“-> in Repository Browser”->右键单击要删除->的文件/文件夹“删除.”

票数 1
EN

Stack Overflow用户

发布于 2012-11-13 16:47:36

我接受了David w.的回答--它从Subversion的角度(基于命令行)正确地描述了事情的状态。由于我使用SmartSVN作为GUI前端,我想从这个角度添加适当的信息。

若要使用SmartSVN查看已删除文件的历史记录,

  • 打开存储库浏览器(与项目窗口相反)
  • 发出Repository | Show Revision命令
  • 选择Revision单选按钮,然后单击Select按钮
  • 选择您希望看到的存储库修订版。

然后,您将看到该文件,前提是它存在于您选择的存储库版本中。

请注意,所选文件夹确定显示哪些文件(似乎没有一种方式显示所有文件,如Project窗口中的那样),以及显示哪些存储库修订版以供选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13351827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档