这是"如何从SVN的修订版本中删除1个文件"的问题的后续解答。 但由于答案可能截然不同,因此我相信知道答案将使其他人受益。 (我不知道答案。)
回答了上一个问题,我发现无法从SVN中删除修订。 第二个最佳解决方案是从SVN中删除文件,提交,然后重新添加文件并再次提交。
现在,我要确保原始文件的修订历史记录已消失。 因此,我希望对问题"我如何找到已删除然后重新提交给SVN的文件的修订历史记录"的答案? 是你不能。
是什么让您认为无法从Subversion删除修订?给您另一个问题(svndumpfilter)的解决方案正是这样做的(请参见参数--drop-empty-revs和--renumber-revs)!而且,当修订不存在时,显然没有办法了解修订历史,因为它从来没有出现过。
简短答案:您可以
长答案:
不幸的是(对于您来说,但对于大多数人而言可能不是),已删除文件的修订历史记录仍然存在-很难找到。
这是一个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| $ 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
------------------------------------------------------------------------ |
看起来它可以工作(旧的历史记录已消失),但是如果您在较旧的版本中请求文件,则会获得历史记录
的已删除文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| $ 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
------------------------------------------------------------------------ |
用简单
您可以快速浏览添加和删除。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| ------------------------------------------------------------------------
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 diff会假装该旧修订版不存在,但是针对该旧修订版的svn checkout将很高兴为您提供旧文件。
我会说您不能-您创建了一个新文件,因此在SVN眼中创建了修订树。
可能可以独立地恢复旧树(不确定是您管理的是实际删除还是仅是SVN删除),但是旧修订树与新修订树之间没有链接。