SVN替换+;恢复丢失文件历史记录?

SVN替换+;恢复丢失文件历史记录?,svn,history,revert,Svn,History,Revert,如果我这样做 > svnadmin create testrepo > svn co file://$(pwd)/testrepo checkout > cd checkout > mkdir trunk > echo something > trunk/myfile.txt > svn add trunk > svn commit -m "first commit" > echo updated >> trunk/myfile.

如果我这样做

> svnadmin create testrepo
> svn co file://$(pwd)/testrepo checkout
> cd checkout
> mkdir trunk
> echo something > trunk/myfile.txt
> svn add trunk
> svn commit -m "first commit"
> echo updated >> trunk/myfile.txt
> svn commit -m "second commit"
那我自然会

> svn up
> svn log trunk/myfile.txt
>> ------------------------------------------------------------------------
>> r2 | user | 2015-01-27 00:45:59 +0100 (Di, 27 Jan 2015) | 1 line
>> 
>> second commit
>> ------------------------------------------------------------------------
>> r1 | user | 2015-01-27 00:45:59 +0100 (Di, 27 Jan 2015) | 1 line
>> 
>> first commit
>> ------------------------------------------------------------------------
现在让我们说,由于意外,我用一个旧版本替换了主干

> svn rm trunk
> svn cp trunk@1 trunk
> svn commit -m "replacing trunk"
> svn up
> svn log trunk/myfile.txt
>> ------------------------------------------------------------------------
>> r3 | user | 2015-01-27 00:45:59 +0100 (Di, 27 Jan 2015) | 1 line
>> 
>> replacing trunk
>> ------------------------------------------------------------------------
>> r1 | user | 2015-01-27 00:45:59 +0100 (Di, 27 Jan 2015) | 1 line
>> 
>> first commit
>> ------------------------------------------------------------------------
然后我决定恢复这个

> svn merge -c -3 .
> svn commit -m "reverted"
> svn up
> svn log trunk/myfile.txt
>> ------------------------------------------------------------------------
>> r4 | user | 2015-01-27 00:49:25 +0100 (Di, 27 Jan 2015) | 1 line
>> 
>> reverted
>> ------------------------------------------------------------------------
>> r3 | user | 2015-01-27 00:45:59 +0100 (Di, 27 Jan 2015) | 1 line
>> 
>> replacing trunk
>> ------------------------------------------------------------------------
>> r1 | user | 2015-01-27 00:45:59 +0100 (Di, 27 Jan 2015) | 1 line
>> 
>> first commit
>> ------------------------------------------------------------------------
所以很明显,即使我恢复了邪恶的承诺,我的文件历史记录现在已经不存在了,我在r2中再也看不到任何变化的痕迹

首先,这是为什么?我是否以错误的方式恢复了提交

第二,有没有办法恢复文件历史记录


感谢所有能为这件事提供线索的人

询问Subversion日志时,需要使用不同的peg修订。因此,要查看意外删除之前的历史记录,请将peg修订设置为错误提交之前的一个修订,然后您将再次看到丢失的历史记录

在你的例子中,试试看

svn log trunk@2
查看丢失的文件。如果您不确定哪个版本是错误版本,请使用
-v
标志和
log
命令,检查是否有
A
行,例如

svn log -v trunk

我的目标是以某种方式再次恢复历史记录,这样其他开发人员就不需要知道错误的提交。看起来我完全可以从之前的修订版创建一个修复分支,只合并坏的提交记录,正常地执行以下提交,然后将分支重新集成到主干中,或者类似的操作。因此,我感兴趣的是一个解决方案,使错误的犯罪尽可能不可见(在我看来,如果没有其他犯罪紧随邪恶犯罪之后,应该可以完全恢复邪恶犯罪,但我不知道如何…)