SVN 405 Method Not Allowed

I accidentally deleted a folder in SVN and added it back immediately. I ran into an issue with this and my solution ended up removing the folder completely from my local copy as well as the server copy. I can do updates and commits without problems on any other file or folder, but if I try to create a folder with the same name, add, and commit, it gives me the following error:

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'

I have run countless cleanups, commits, updates, etc. Nothing resolves the issue. Ideas?

FYI, I do not have the option of renaming the top level folder.

153915 次浏览

我猜测是您试图在 SVN 中添加 已经存在了的文件夹。您可以通过将文件签出到其他文件夹来确认,并查看主干是否已经具有所需的文件夹。

I just fixed this in my own repository. I'm using TortoiseSVN on Windows, so I'm not sure exactly what commands this translates to on the command line, but here's what I did:

有问题的文件夹称为 lib,应该添加该文件夹。

  • 首先我撤销了添加,这样 SVN 就不再关注 它。
  • Then I renamed it (to libs, not that that matters) using the Windows context menu, added it, and committed successfully.
  • Finally I renamed it back to lib using TortoiseSVN's context menu (this is probably important), and committed again.

我刚才也遇到了这个问题,就是这样解决的。所以我把它记录在这里,我希望它对其他人有用。

场景:

  1. 在我提交代码之前,修订: 100
  2. (其他人提交代码... 修订增加到199)
  3. I (forgot to run "svn up", ) commit the code, now my revision: 200
  4. 我运行“ svn up”。

出现了错误。

解决方案:

  1. $mv current _ copy _ back # 重命名当前代码副本
  2. $svn checkout current _ copy # 再次检查
  3. $cp copy _ back/current _ copy # 还原您的修改

对我来说,修复它的最快方法是复制受影响的文件夹,并用另一个名称提交它。然后是 svn mv duplicateFolder originalFolder。很简单。

因此,取一个文件夹1并创建一个文件夹1复制:

svn delete folder1
svn add folder1Copy

提交和更新:

svn mv folder1Copy/ folder1/

再犯一次,就搞定了。

我也有过类似的问题。最后我从轨道上用核武器摧毁了它,在此过程中失去了我的 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"

当前添加的目录已经提交到存储库中。因此,删除存储库中的目录并再次提交相同的目录。

我的“消失”文件夹是 libraries/fof

如果我删了,然后更新,就不会出现了。

cd libaries
svn up

(什么都没发生)。

但更新实际名称:

svn update fof

成功了,它被更新了。因此,我在它上面展开了我的(手动焦油存档的)工作副本并重新提交。最简单的解决办法。

我遇到了同样的问题,并通过以下方式解决了它:

  1. 将文件夹复制到另一个位置。
  2. Delete .svn from copied folder
  3. 右键单击原始文件夹并选择“ SVN Checkout”
  4. 如果你找不到(3) ,那么你的情况与我的不同。
  5. 看看 REPO-BROWSER 上的目录是否正确。
  6. Check out
  7. 将复制文件夹中的文件返回到原始目录。
  8. 承诺。

如果使用 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的东西。

现在没事了。

这意味着您试图放在 svn 上的文件夹/文件已经存在。我的建议是,在做任何事情之前,只需右键单击文件夹/文件,然后单击 repo 浏览器。通过这样做,您将能够看到 svn 上已经存在的所有文件/子文件夹等。如果 svn 上不存在所需的文件/文件夹,那么只需删除(备份之后)要添加的文件,然后运行更新。

我得到了这个错误,因为我将 URL 地址替换为以“/”结尾的新地址。我的意思是记录在 WC.DB数据库中的 .svn文件夹中的 REPOSITORY 表。

当我删除符号: “/”时,错误就消失了。