2010-08-30 505 views
118

我不小心刪除了SVN中的文件夾,並立即將其添加回來。我遇到了這個問題,我的解決方案最終從我的本地副本以及服務器副本中完全刪除文件夾。我可以做更新,而不會對任何其他文件或文件夾的問題提交,但如果我嘗試創建一個文件夾具有相同的名稱,添加和承諾,它給了我下面的錯誤:SVN 405方法不允許

svn: Server sent unexpected return value (405 Method Not Allowed) in response to MKCOL request for '/svn/www/!svn/wrk/9de0d765-2203-456c-af16-58e792ec7ac0/trunk/htdocs/solutions/medical'

我已經運行無數的清理,提交,更新等等。沒有什麼能夠解決問題。想法?

僅供參考,我沒有重命名頂級文件夾的選項。

+0

我試圖刪除一個子目錄,所以我可以忽略它。不知何故,它解決了自己,我不知道什麼是這些元素的奧祕組合,因此我放棄了我的問題。我的新版本是:爲什麼我們不只是使用'git'? – icedwater 2013-08-01 02:28:18

回答

169

我的猜測是你試圖添加的文件夾已經存在在SVN中。您可以通過將文件簽出到不同的文件夾來確認是否已經有了所需的文件夾。

+1

我在另一個簽出版本上進行了驗證。爲什麼我的工作副本不會更新,我無法確定。 – roadsunknown 2010-08-31 23:14:19

+1

這裏也是這種情況,但我不得不在一個單獨的文件夾中檢查文件夾(或者更確切地說,我將它重命名爲「foo」並將svn提升並返回,包括「已刪除」文件夾,儘管我成功了承諾刪除它。) – Kalle 2012-03-28 22:22:24

+1

@Shaji:我理解你的情況。但是,由於這個錯誤,我仍然可以承諾嗎?或者無論如何,請告訴我。謝謝。 – 2014-06-27 07:47:01

3

我剛剛在我自己的存儲庫中修復了這個問題。我在Windows上使用TortoiseSVN的,所以我不知道到底是什麼命令,這相當於在命令行上,但這裏是我所做的:

有問題的文件夾名爲lib,這是由於以復加。

  • 首先我解開加,讓SVN不再關注 吧。
  • 然後,我使用Windows上下文菜單將其重命名爲libs,這並不重要,添加它併成功提交。
  • 最後,我使用TortoiseSVN的上下文菜單(這可能很重要)將其重命名爲lib,並再次提交。
3

我剛纔也遇到了這個問題,並用這種方法解決了這個問題。所以我把它記錄在這裏,我希望它對其他人有用。

場景:

  1. 之前,我提交的代碼,修改:100
  2. (別人提交的代碼...修改增加至199)
  3. 我(忘了運行 「SVN了」 ,)提交代碼,現在我的修訂版本:200
  4. 我運行「svn up」。

發生錯誤。

解決方案:

  1. $ MV current_copy copy_back#將當前的代碼複製
  2. $ svn籤current_copy#檢查它再次
  3. $ CP copy_back/current_copy#恢復您的修改
56

我修復它的最快捷方式是複製受影響的文件夾,並使用替代名稱進行提交。然後svn mv duplicateFolder originalFolder。挺容易。

因此,採取文件夾1,並作出folder1Copy:

svn delete folder1 
svn add folder1Copy 

提交和更新:

svn mv folder1Copy/ folder1/ 

再次提交,它的固定。

+6

這對我來說很好,比處理第二份工作拷貝簡單得多。 – Justin 2012-05-25 01:39:19

+0

嘗試了很多東西,這工作:D乾杯大耳朵 – 2012-07-10 08:58:58

+0

希望'提交和更新'不是一個文字命令行...在Unix中,將嘗試並行執行兩個。 – LarsH 2012-10-04 17:40:57

3

我有一個類似的問題。我最終在軌道上運行它,並在這個過程中失去了我的SVN歷史。但至少我讓那個該死的錯誤消失了。

這可能是執行命令的次優序列,但它應該相當密切跟蹤,我實際上沒有得到命令序列東西的工作:

cp -rp target ~/other/location/target-20111108 
svn rm target --force 
cp -rp ~/other/location/target-20111108 target-other-name 
cd target-other-name 
find . -name .svn -print | xargs rm -rf 
cd .. 
svn add target-other-name 
svn ci -m "Re-re-re-re-re-re-re-re-re-re import target" 
svn mv target-other-name target 
svn ci -m "Re-re-re-re-re-re-re-re-re-re import target" 
+0

+1爲'從軌道上運行' – weaveoftheride 2012-12-06 11:43:30

+0

這是唯一可以確定的方法。 – TomDestry 2014-05-29 19:32:36

0

當前加入目錄已經在存儲庫中提交。因此,刪除存儲庫中的目錄並再次提交相同的目錄。

10

我的「消失」文件夾是libraries/fof

如果我刪除它,然後運行更新,它不會顯示。

cd libaries 
svn up 

(什麼也沒有發生)。

但與實際名稱更新:

svn update fof 

的伎倆,它已更新。所以我將我的(手動tar歸檔的)工作副本展開並重新發布。簡單的解決方案。

+0

同意這是最簡單的。只需做「svn up [folder]」而不是「svn up」。 – Dimitris 2013-08-16 14:20:09

+0

該解決方案適用於我。謝謝。 – 2015-08-13 14:16:45

0

我遇到了同樣的問題,並能夠通過解決它:

  1. 將文件夾複製到另一個地方。
  2. 從複製的文件夾
  3. 刪除.svn文件右鍵單擊原始文件夾,並選擇「SVN結帳」
  4. 如果你不能找到(3),那麼你的情況比我的不同。
  5. 查看REPO-BROWSER上的目錄是否正確。對我而言,這是原因。
  6. 結賬
  7. 從複製的文件夾中取回文件到原始目錄中。
  8. 提交。
1

如果您使用code.google.com託管您的Subversion存儲庫。

你知道下面的東西吧?

If you plan to make changes, use this command to check out the code as yourself using HTTPS: 

# Project members authenticate over HTTPS to allow committing changes. 
svn checkout https://.../svn/trunk/ user-... 

When prompted, enter your generated googlecode.com password. 
Use this command to anonymously check out the latest project source code: 

# Non-members may check out a read-only working copy anonymously over HTTP. 
svn checkout http://.../svn/trunk/ ...-read-only 

您剛纔提到的錯誤正是您使用的Non-members may check out a read-only working copy anonymously over HTTP狀態。因此,你目前無法承諾或做任何事情。

你必須使用Project members authenticate over HTTPS to allow committing changes的東西。

現在就好了。

0

這意味着您試圖放在svn上的文件夾/文件已經存在。我的建議是,在做任何事之前,只需右鍵單擊文件夾/文件並單擊回購瀏覽器。通過這樣做,您將能夠看到svn上已經存在的所有文件/子文件夾等。如果所需的文件/文件夾不存在於svn中,那麼您只需刪除(在進行備份後)您要添加的文件,然後運行更新。