这是“How do I delete 1 file from a revision in SVN?”的后续问题,但因为它可能有一个非常不同的答案,我相信其他人会从知道答案中受益。 (我还不知道答案。)
上一个问题已经回答,我发现无法从SVN中删除修订版。第二个最佳解决方案是从SVN中删除文件,提交然后再添加文件并再次提交。
我现在想确保原始文件的修订历史记录已经消失。所以我希望问题“如何找到已删除的文件的修订历史记录然后重新提交给SVN?”的答案是你不能的。
答案 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删除)但旧版本树与新版本树之间没有链接。