这是“如何从 SVN 的修订中删除 1 个文件? ”的后续问题,但因为它可能有一个非常不同的答案,我相信其他人会从知道答案中受益。(我还不知道答案。)
上一个问题得到了回答,我发现无法从 SVN 中删除修订。第二个最佳解决方案是从 SVN 中删除文件,提交,然后重新添加文件并再次提交。
我现在想确保原始文件的修订历史已经消失。所以我希望“我怎样才能找到被删除然后重新提交给 SVN 的文件的修订历史? ”这个问题的答案是你不能。
这是“如何从 SVN 的修订中删除 1 个文件? ”的后续问题,但因为它可能有一个非常不同的答案,我相信其他人会从知道答案中受益。(我还不知道答案。)
上一个问题得到了回答,我发现无法从 SVN 中删除修订。第二个最佳解决方案是从 SVN 中删除文件,提交,然后重新添加文件并再次提交。
我现在想确保原始文件的修订历史已经消失。所以我希望“我怎样才能找到被删除然后重新提交给 SVN 的文件的修订历史? ”这个问题的答案是你不能。
是什么让您认为不可能从 Subversion 中删除修订版?对您的其他问题 ( svndumpfilter
) 给出的解决方案正是这样做的(参见参数--drop-empty-revs
和--renumber-revs
)!而当修订消失时,显然无法获得修订历史,因为它从一开始就不存在。
用一个简单的
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 会很乐意为您提供旧文件。
简短的回答:你可以
长答案:
不幸的是(对你来说,但也许对大多数人来说不是),已删除文件的修订历史仍然存在 - 只是有点难以理解。
这是一个例子:
$ 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
------------------------------------------------------------------------
我会说你不能 - 你已经创建了一个新文件,因此在 SVN 的眼中是修订树。
可能可以独立恢复旧树(不确定您是管理实际删除还是仅管理 SVN 删除),但旧修订树和新修订树之间没有链接。