2009-10-08 251 views
2

我對版本控制相當陌生,而且我正在使用svn作爲我正在使用的項目,它是託管在svn上的。
在我的本地工作副本中,我添加了一個臨時文件並將其刪除,但未使用svn delete(因爲我沒有意識到)。
現在文件仍然版本控制之下,所以當我確實犯我最終改變我的私人分支,該文件被寫入到存儲庫和提交成功,但報告的錯誤後承諾:svn:刪除存儲庫中的文件

 
svn: Error processing command 'committed' in '.' 
svn: Error replacing text-base of 'tmp_file' 
svn: Can't change perms of file 'tmp_file': No such file or directory 
run svn cleanup 

清理命令也給出了類似的結果。
我不想在存儲庫中的分支中的tmp_file。

任何人都可以提出一些方法來做到這一點?

在此先感謝

回答

4

查找svn恢復。

「SVN幫助復歸」

我沒有這臺機器上這裏svn的方便,但儘量沿着線的東西:

svn revert tmp_file 
svn delete tmp_file 
svn update 
svn commit -m "Correctly deleted the temp file" 

這基本上撤消的文件系統級別刪除您執行,svn刪除,確保你的工作副本是最新的,然後提交更改。

編輯:好的,如果你運行「svn --version」,它會告訴你你的版本是1.4。什麼?

如果是這樣,你已經打破了你的工作副本,它不能被修復。請參閱Bug Report here

如果您的工作副本不包含任何需要提交的更改,除了tmp_file之外,您只需檢出一個新的工作副本到另一個目錄並刪除已損壞的副本。您可以通過運行「svn status」確認沒有其他更改。

然後,在新的工作副本中,按照上述「svn delete」以上的命令正確刪除文件。

+0

感謝您的及時響應..但還有一個問題,工作副本被鎖定,也「svn恢復建議運行svn清理..它退出相同的錯誤消息 – sud03r 2009-10-08 01:38:01

+0

@Neeraj你有這個整理然後呢? 只是想知道你是否試過在受影響的文件的父目錄上運行cleanup命令 另外,我刪除然後提交所有的時間沒有問題除非我誤解你描述的場景--svn刪除應該像在給定的工作區刪除+ svn commit一樣工作。你使用什麼版本的SVN? – 2009-10-08 03:49:51

+0

@Critical。我相信你會發現Neeraj創建了這個文件,執行了svn add,刪除了一個文件系統,之後通過提交。在舊版本的顛覆中,這個不可撤銷的co破壞了工作拷貝。作爲Neeraj的一個附註,我會更新你的Subversion客戶端。所有1.x客戶端都向後兼容較舊的Subversion服務器版本。 – 2009-10-08 03:59:22

2

這可能已在更近的svn中修復。我試圖用這種方式重現東西:

$ svnadmin create test_repos 
$ svn co file:///.../test_repos test_co 
Checked out revision 0. 
$ cd test_co 
$ touch tmp_file 
$ svn add tmp_file 
A   tmp_file 
$ rm tmp_file 
$ svn ci -m "" 
svn: '/.../tmp_file' is scheduled for addition, but is missing 

換句話說,我的提交沒有成功。我正在使用1.6.2(r37639)。