1

这是“如何从 SVN 的修订中删除 1 个文件? ”的后续问题,但因为它可能有一个非常不同的答案,我相信其他人会从知道答案中受益。(我还不知道答案。)

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

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

4

4 回答 4

3

是什么让您认为不可能从 Subversion 中删除修订版?对您的其他问题 ( svndumpfilter) 给出的解决方案正是这样做的(参见参数--drop-empty-revs--renumber-revs)!而当修订消失时,显然无法获得修订历史,因为它从一开始就不存在。

于 2008-08-29T02:42:13.340 回答
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 会很乐意为您提供旧文件。

于 2008-08-29T02:33:39.677 回答
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
------------------------------------------------------------------------
于 2008-08-29T02:43:37.080 回答
1

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

可能可以独立恢复旧树(不确定您是管理实际删除还是仅管理 SVN 删除),但旧修订树和新修订树之间没有链接。

于 2008-08-29T02:24:32.913 回答