2010-06-21 56 views

回答

10

如果您在分支上創建了一個目錄(即使我認爲如果您沒有簽入它),您經常會看到此情況,但同時有人也在其上創建了一個同名目錄樹幹。所以當你從分支切換到中繼時,它正在嘗試檢查目錄的中繼版本,但它不能,因爲它已經存在,所以它不想垃圾你的版本。

編輯:

來解決它的最好方法是重命名該目錄中的工作副本然後更新。更新後,您可以決定是否需要將內容複製到新創建的目錄中。

EDIT2:

沒有的SVN自動解決這個的好方法。這聽起來像你已經在你的工作副本中創建了這個文件夾(當前在分支上籤出),而其他人已經在中繼上創建了這個文件夾。當你切換它試圖創建新的目錄時,但它不能,因爲你已經有了。我認爲,只有處理這種方式是暫時重命名目錄,然後切換,然後比較兩個目錄的內容,看看是否有額外的文件,你需要添加或合併。

+0

此答案未能給出正確的解決方案。你知道如何解決這個問題嗎? (我目前遇到這個問題,而我最好的解決方法是做一個乾淨的結賬,這非常耗時) – 2012-05-30 12:27:30

+0

查看更新的答案 – 2012-05-30 13:54:39

+0

我有一種情況,重命名不是一個好的選擇。有沒有辦法修復它? – 2013-08-14 22:59:02

3

我懷疑\ Path \ To \ The目錄不存在於分支中,但確實存在於主幹中。新添加到樹幹可能?當你切換時,SVN認爲它應該將它添加到你的本地目錄中,因爲它不是(應該是)在你要切換的分支上。但無論如何它都在那裏。這可能是由於沒有正確結帳的情況下的事先切換造成的。即你之前做過這個開關,然後當你從樹幹切換回樹枝時,你沒有清理殘餘物。所以現在剩下的目錄是存在的,它不會期望看到它。

2

也許Path/To/The/Directory在您當前的分支中不存在,但它確實存在於trunk中?

可能是問題的另一件事是當SVN服務器運行區分大小寫的操作系統(例如* nix),並且您正在使用Windows時。在這種情況下,SVN服務器會考慮:

Path/To/The/Directory 
Path/To/The/directory 

作爲兩個不同的目錄。這通常發生在有人對目錄名進行大小寫更改時發生。

2

一個簡單的解決方案是使用svn switch--force標誌。

例如,當我切換回主幹時,我看到切換到分支後出現錯誤。這解決了我的問題:

svn switch --force ^/trunk 
0

要解決這個錯誤,同時保留目錄中,我發現了以下技術工作:

  • SVN切換目錄的正確路徑的資料庫(如果它並沒有指出那裏)。
  • 移動。svn隱藏文件夾內的目錄到一些安全的位置(你的桌面)。
  • SVN清理並更新父目錄。 更新可能導致某些子目錄中出現相同的錯誤。忽略這個。
  • 一個新的.svn隱藏文件夾將在該目錄內創建。將原始.svn隱藏文件夾移回目錄中,覆蓋新的.svn文件夾的現有內容。 我不記得我是否因爲某些錯誤或者預感而做了這件事......無論如何,它似乎都能做到這一點。
  • SVN再次更新目錄。
  • Voila!

請注意,在一個系統中至少有一次,這個技巧導致所有子目錄/文件顯示?。從子目錄中刪除一個.svn文件夾並再次清理/更新父目錄。

不知道這是什麼巫毒,但我承諾變化和後來更新各種系統,他們都似乎很高興。

FYI我到這個狀態由於不尋常的情況:

/foo和一個svn:外部/ newfoo /條,且這種結構需要撤消這麼/ newfoo /條被移動,並更名爲/ foo中。

  • 我刪除了/指向/ foo的svn:external property,並提交。
  • 我用TortoiseSVN的資源庫瀏覽器先將/ newfoo/bar移動到/ bar,然後將/ bar重命名爲/ foo。
  • 我的本地副本上的SVN更新首先導致/ foo在/ foo存在(或somesuch)時指向/ newfoo/bar的錯誤消息。
  • 我SVN切換/ foo到新路徑/ foo
  • 現在SVN更新導致「版本相同的目錄已存在」錯誤。
相關問題