如何查找已删除然后重新提交给SVN的文件的修订历史记录?

时间:2008-08-29 02:17:07

标签: svn

这是“How do I delete 1 file from a revision in SVN?”的后续问题,但因为它可能有一个非常不同的答案,我相信其他人会从知道答案中受益。 (我还不知道答案。)

上一个问题已经回答,我发现无法从SVN中删除修订版。第二个最佳解决方案是从SVN中删除文件,提交然后再添加文件并再次提交。

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

4 个答案:

答案 0 :(得分:3)

是什么让您认为无法从Subversion中删除修订版?为您的其他问题(svndumpfilter)提供的解决方案就是这样做的(请参阅参数--drop-empty-revs--renumber-revs)!当修订版本消失时,显然没有办法获得修订历史记录,因为它从来就不存在。

答案 1 :(得分: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 log不会显示该文件,svn diff会假装旧版本不存在,但针对旧版本的svn checkout将很乐意为您提供旧文件。

答案 2 :(得分: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
------------------------------------------------------------------------

答案 3 :(得分:1)

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

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

相关问题