2008-12-17 107 views
200

最近我們的SVN服務器被改變,而我們做一個svn開關。SVN的錯誤 - 不是工作拷貝

由於工作副本有一個巨大的未版本控制的資源量,工作拷貝被鎖,我們開始通過文件夾下所有的svn文件夾,運行完美切換文件夾。

但在倉庫的最頂層,當我嘗試更新的文件,我得到的的svn:工作副本「」鎖定錯誤和清理沒有任何幫助。當我進行清理時,我收到類似這樣的錯誤 - svn:'content'不是工作副本目錄

新結帳不是一個選項。是否有其他方法可以清理並釋放鎖並完全切換開關?

編輯: 在JesperE的答覆的最後一段

如果你得到一個「不是工作副本」時 做一個遞歸「使用svn清理」我 猜測是,你有一個目錄 這應該是一個工作拷貝(即 在頂層 .svn目錄包含是這麼說的),但它缺少了自己的.svn 目錄。在這種情況下,你 可以嘗試只刪除/動議 目錄,然後執行本地更新

似乎是在倉庫解決的問題。我已經確定了這些文件夾,並單獨完成了對這些特定文件夾的全新檢出,哇,這些鎖在隨後的清理中被釋放!非常感謝JesperE!

但是,我仍然想不通的svn的開關錯誤,現在讀取類似,

的svn:在 '的svn:// repourl/reponame /文件夾名' 的檔案庫 uuid是「M/reponame」,但WC 有 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

任何想法?

回答

114

如果你在遞歸時得到一個「不是工作副本」svn cleanup我的猜測是你有一個應該是工作副本的目錄(即頂層的.svn目錄這樣說),但是它缺失自己的.svn目錄。在這種情況下,您可以嘗試刪除/移動該目錄,然後執行本地更新(即rm -rf content; svn checkout content)。

如果你得到一個not a working copy錯誤,這意味着Subversion在那裏找不到合適的.svn目錄。檢查contents中是否有.svn目錄

如果可能,理想的解決方案是全新結帳。

+1

我同意,做一個新的結帳,而不是試圖移動你的工作副本回購。 – Tigraine 2008-12-17 12:00:17

+2

我的問題是我已經遷移到一個新的服務器,並恢復了我的文件系統備份尚未提交的工作,並使用svnadmin篩選出我不再需要的舊項目。所以我的存儲庫包含我需要的所有信息,但有一個新的UUID。 在這種情況下,我只需要打開已更改的文件,重新檢出,然後解壓。 – Drarok 2009-08-28 15:21:11

+0

您的第一段中的建議不適用於我的系統(W7 + Cygwin)。而rm&svn更新做到了。 – 2012-05-02 12:54:20

0

的svn:在存儲庫 '的svn:// repourl/reponame /文件夾名' uuid是 '米/ reponame',但具有WC 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

每個顛覆回購有一個唯一的標識符(uuid)。 Subversion使用它來確保執行切換操作時repo實際上是相同的。您可能應該將服務器上的uuid更改爲與之前相同。

0

它可能是一個工作副本格式不匹配?它在svn 1.4和1.5之間變化,較新的工具自動轉換格式,但之後舊的工具不再使用轉換後的拷貝。

0

您必須從項目中刪除SVN基礎文件(它們是隻讀文件)。由於這個,你會得到這個錯誤。

再次檢查一個新項目,使用「Winmerge」合併您的較早的SVN項目的更改(如果有的話)並在最新檢查中提交更改。

3

解決方法: 你做了一些修改一些文件:這是不是「工作副本」 結帳/更新/恢復該目錄再次 移動文件從重命名的目錄到新 提交更改

原因 重命名目錄在.svn目錄下,這打破了「工作副本」

0

@JesperE mentions您需要更改uuid。以下內容應該可以幫助你實現這一點

在SVN 1.5+上,你可以做svnadmin setuuid;然後你可以使用svnlook uuid檢查它是否被正確設置。在較早版本的SVN中,這是一個更難的過程。請參閱http://chestofbooks.com/computers/revision-control/subversion-svn/Managing-Repository-UUIDs-Reposadmin-Maint-Uuids.html

此外,「m/reponame」的UUID看起來可疑。我相信它應該是一個十六進制格式的數字,就像工作副本一樣,所以也許這個動作會改善所有的事情:-)

[我最初評論@JesperE's answer,但創建了這個答案,使它更明顯的人和對Google更有幫助。我已經刪除了我的評論。 ]

46

我陷入了類似的情況(svn: 'papers' is not a working copy directory)以不同的方式,所以我想我會後我的戰鬥的故事(簡體):

$ svn add papers 
svn: Can't create directory 'papers/.svn': Permission denied 

糟糕!修復權限...然後:

$ svn add papers 
svn: warning: 'papers' is already under version control 
$ svn st 
~  papers 
$ svn cleanup 
svn: 'papers' is not a working copy directory 

連動papers出的方式和運行svn up(其供職的OP)沒有解決它。這是我做的:

$ mv papers papers_ 
$ svn cleanup 
$ svn revert papers 
Reverted 'papers' 
$ mv papers_/ papers 
$ svn add papers 

工作。

1

我剛剛得到了「不是工作副本」,對我而言,原因是Unix上的Automouter。 只是一個新的「CD /路徑/到/工作/目錄」伎倆。

1

如果您在新目錄中創建了一個文件,而不是'svn add newdir/newfile',請使用'svn add newdir',因爲您需要添加目錄。目錄內的所有文件將默認添加。

5

我解決它通過

  1. 複製受影響的文件夾的備份
  2. SVN恢復受影響的文件夾
  3. 從備份

在我的情況下,問題將文件粘貼回原因是刪除了.svn文件。

1

一樣,我需要更新「的contrib」文件夾:

  1. 移動的舊文件夾出,
  2. 複製的新
  3. 複製的.svn目錄到每個(只在我的三個大小寫)新文件夾。

我的情況也是這個問題是由於刪除.svn文件夾。

已解決。

5

也許你只是複製文件夾的樹,並試圖添加最低的一個。

SVN 
|_ 
    | 
    subfolder1 
     | 
     subfolder2 (here you get an error) 

在這種情況下,您必須提交上級目錄。

0

有這個相同的問題,原來我們在同一臺機器上有Slik 1.6.2以及Tortoise。烏龜已更新(並更新了工作副本)但Slik沒有,所以烏龜工作正常,但命令行失敗:

svn:'。'是不是一個工作副本目錄

刪除龜和Slik,然後重新安裝烏龜與命令行工具啓用固定這個給我。

1

我試圖將.svn文件夾從子文件夾粘貼到根文件夾。有用!!!

1

這是我做過什麼:

  1. 重命名樹幹trunk_
  2. 創建一個新的文件夾主幹
  3. 重新籤和中斷處理後一些文件被檢查出
  4. 移動文件從trunk_到中繼
  5. 做svn清理
  6. 做svn更新。這將更新文件的狀態,然後您的所有文件將被版本化。
1

我也在svn diff操作中遇到這個問題,它是由不正確的文件路徑引起的,你應該加上'./'來表示當前的文件目錄。

0

爲Mac: - 從服務器端需要結帳一個新的窗口將打開,以從本地機器上選擇目錄不是把所有的代碼選定文件夾中,然後打開SVN本地端和添加並提交項目

0

今天我在早上發現了相同的問題/FILE_NAME/ is not a working copy,我已經花了超過兩個小時來解決它。經過長時間的RND和谷歌我找到了一些解決方案,那就是CHECKOUT

  1. CHECKOUTSUBVERSION到當地的新項目。
  2. 更改java文件中的一些代碼並提交項目。
  3. 這對我很有用。

希望它對你有幫助。

0

刪除本地計算機中存在的.svn文件夾。按下windows圖標並鍵入.svn,刪除整個文件夾。它爲我工作。