2008-08-29 31 views
1

这是一个关于“How do I delete 1 file from a revision in SVN?”的问题,但因为它可能有非常不同的答案,我相信其他人会从了解答案中受益。 (我还不知道答案)如何查找已删除并重新提交给SVN的文件的修订历史记录?

回答了上一个问题,我发现无法从SVN中删除修订版。第二个最好的解决方案是从SVN中删除文件,提交然后添加文件并重新提交。

我现在想要确保原始文件的修订历史记录已经消失。所以我希望问题的答案“如何找到已删除的文件的修订历史记录,然后重新提交到SVN?”是不可以的。

回答

2

用一个简单的

svn log -v [folder] 

您可以快速浏览添加和删除。

------------------------------------------------------------------------ 
r14 | kame | 2008-08-29 04:23:43 +0200 (ven., 29 aoû2008) | 1 line 
Chemins modifié : 
    A /a.txt 

Readded a 
------------------------------------------------------------------------ 
r13 | kame | 2008-08-29 04:23:24 +0200 (ven., 29 aoû2008) | 1 line 
Chemins modifié : 
    D /a.txt 

Delete a 
------------------------------------------------------------------------ 
r12 | kame | 2008-08-29 04:23:06 +0200 (ven., 29 aoû2008) | 1 line 
Chemins modifié : 
    A /a.txt 

SVN的日志不会显示该文件,SVN差异会假装旧的版本不存在,但svn签针对旧版本会很乐意给你的旧文件。

1

我会说你不能 - 你已经在SVN的眼中创建了一个新文件,因此修改了树。

可以独立恢复旧树(不确定是否管理实际删除或只是SVN删除),但旧版本树和新版本树之间没有链接。

3

是什么让你认为不可能从Subversion中删除修订版本?针对您的其他问题(svndumpfilter)的解决方案确实如此(请参阅参数--drop-empty-revs--renumber-revs)!而当修订版本没有了,显然没有办法获得修订历史记录,因为它从来就不在那里。

2

简短的回答:可以

龙答:

不幸的是(对你,但也许不是大多数人),已删除文件的修订历史是仍然存在 - 它只是一个有点难以理解。

下面是一个例子:

$ touch one 
$ svn add one 
$ svn ci -m "Added file one" 
$ date >> one 
$ svn ci -m "Updated file one" 
$ date >> one 
$ svn ci -m "Updated file one again" 
$ svn log file:///repos/one 

------------------------------------------------------------------------ 
r3 | andrewr | 2008-08-29 12:27:10 +1000 (Fri, 29 Aug 2008) | 1 line 

Updated file one again 
------------------------------------------------------------------------ 
r2 | andrewr | 2008-08-29 12:26:50 +1000 (Fri, 29 Aug 2008) | 1 line 

Updated file one 
------------------------------------------------------------------------ 
r1 | andrewr | 2008-08-29 12:25:07 +1000 (Fri, 29 Aug 2008) | 1 line 

Added file one 
------------------------------------------------------------------------ 

$ svn delete one 
$ svn ci -m "Deleted file one" 
$ svn up 
$ touch one 
$ svn add one 
$ svn ci -m "Adding file one back in" 
$ svn log file:///repos/one 

------------------------------------------------------------------------ 
r5 | andrewr | 2008-08-29 12:29:13 +1000 (Fri, 29 Aug 2008) | 1 line 

add one back 
------------------------------------------------------------------------ 

它看起来像它的工作原理(旧的历史已经一去不复返了),但是如果你在老版本请求文件你得到的历史被删除文件的 。

$ svn log -r 3:1 file:///repos/one 

------------------------------------------------------------------------ 
r3 | andrewr | 2008-08-29 12:27:10 +1000 (Fri, 29 Aug 2008) | 1 line 

Updated file one again 
------------------------------------------------------------------------ 
r2 | andrewr | 2008-08-29 12:26:50 +1000 (Fri, 29 Aug 2008) | 1 line 

Updated file one 
------------------------------------------------------------------------ 
r1 | andrewr | 2008-08-29 12:25:07 +1000 (Fri, 29 Aug 2008) | 1 line 

Added file one 
------------------------------------------------------------------------ 
相关问题