1
如果我做了以下SVN替換+還原丟失文件歷史記錄?
> 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 [email protected] 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中的變化的痕跡。
所以首先,這是爲什麼?我是否以錯誤的方式回覆了提交?
其次,有什麼方法可以恢復文件歷史嗎?
感謝任何能夠闡明這一點的人!
我的目標是以某種方式重新恢復歷史,但沒有其他開發人員需要知道壞提交。 看起來好像我可以從修正版之前創建一個修復分支,只合並壞提交記錄,正常執行以下提交,然後將分支重新集成到trunk或類似文件中。 所以我會感興趣的是一個解決方案,它會使錯誤的提交儘可能隱蔽(在我看來,如果沒有其他提交遵循惡意提交,應該有可能完全恢復惡意提交,但是我不'不知道怎麼...) – pete83 2015-01-27 21:13:18