2008-08-29 44 views
1

這是一個關於「How do I delete 1 file from a revision in SVN?」的問題,但因爲它可能有非常不同的答案,我相信其他人會從瞭解答案中受益。 (我還不知道答案)如何查找已刪除並重新提交給SVN的文件的修訂歷史記錄?

回答了上一個問題,我發現無法從SVN中刪除修訂版。第二個最好的解決方案是從SVN中刪除文件,提交然後添加文件並重新提交。

我現在想要確保原始文件的修訂歷史記錄已經消失。所以我希望問題的答案「如何找到已刪除的文件的修訂歷史記錄,然後重新提交到SVN?」是不可以的。

回答

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的日誌不會顯示該文件,SVN差異會假裝舊的版本不存在,但svn籤針對舊版本會很樂意給你的舊文件。

1

我會說你不能 - 你已經在SVN的眼中創建了一個新文件,因此修改了樹。

可以獨立恢復舊樹(不確定是否管理實際刪除或只是SVN刪除),但舊版本樹和新版本樹之間沒有鏈接。

3

是什麼讓你認爲不可能從Subversion中刪除修訂版本?針對您的其他問題(svndumpfilter)的解決方案確實如此(請參閱參數--drop-empty-revs--renumber-revs)!而當修訂版本沒有了,顯然沒有辦法獲得修訂歷史記錄,因爲它從來就不在那裏。

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 
------------------------------------------------------------------------