不允许使用SVN 405方法


122

我不小心删除了SVN中的文件夹,并立即将其重新添加了。我遇到了一个问题,我的解决方案最终从本地副本以及服务器副本中完全删除了该文件夹。我可以对其他任何文件或文件夹进行更新和提交,而不会出现问题,但是如果我尝试创建一个具有相同名称,添加和提交的文件夹,则会出现以下错误:

svn:服务器发送了意外的返回值(不允许使用405方法)以响应MKCOL对“ / svn / www /!svn / wrk / 9de0d765-2203-456c-af16-58e792ec7ac0 / trunk / htdocs / solutions / medical”的请求

我已经运行了无数次清理,提交,更新等操作。没有任何方法可以解决问题。有想法吗?

仅供参考,我没有重命名顶层文件夹的选项。


在尝试删除子目录时,我尝试执行相同的操作,因此我可以正确地忽略它。它以某种方式自行解决,我真的不知道这些元素的奥秘组合是巧合的,因此我放弃了这个问题。我的新观点是:为什么我们不仅仅使用全部git
icedwater

Answers:


170

我的猜测是您要添加的文件夹已经存在于SVN中。您可以通过将文件检出到另一个文件夹来确认,并查看中继是否已具有所需的文件夹。


1
我确实在另一个签出的版本上对此进行了验证。我无法确定为什么我的工作副本不会随之更新。
roadsunknown

1
在这里也是如此,但我必须将文件夹检入单独的文件夹中(或者,尽管我成功提交了,但我还是将其重命名为“ foo”并svn upd并取回,包括“ deleted”文件夹)删除它。)
Kalle 2012年

1
@Shaji:我了解你的情况。但是由于这个错误,我怎么仍然可以犯错呢?还是有事情要做,请告诉我。谢谢。
2014年

1
在文件夹上进行SVN更新,然后再次尝试提交。
Alex R

这是一个令人讨厌的错误。我从Github签出了一个新的存储库,并提交了一个新文件夹。它总是显示相同的错误。尝试过您的解决方案,但是它不起作用。
emeraldhieu

56

对我而言,修复它的最快方法是复制受影响的文件夹,并使用其他名称提交。然后svn mv duplicateFolder originalFolder。挺容易。

因此,采用folder1并制作一个folder1Copy:

svn delete folder1
svn add folder1Copy

提交和更新:

svn mv folder1Copy/ folder1/

再次提交,它是固定的。


6
这对我来说非常有效,并且比处理第二份工作副本要简单得多。
贾斯汀

希望commit & update它不是文字上的命令行...在Unix中会尝试并行执行这两个操作。
LarsH 2012年

1
很棒的好先生,如果你来森尼韦尔,以某种方式找到我,我会给你买咖啡。
Michael Voznesensky 2014年

10

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

如果我删除了它,然后进行了更新,它将不会显示。

cd libaries
svn up

(没发生什么事)。

但是使用实际名称进行更新:

svn update fof

做到了把戏,并进行了更新。因此,我将其(通常为tar存档)的工作副本分解了下来,然后重新提交。最简单的解决方案。


同意这是最简单的。只需执行“ svn up [文件夹]”而不是“ svn up”即可。
Dimitris

此解决方案是对我有用的解决方案。谢谢。
Miguel Rentes 2015年

4

我只是在自己的存储库中解决了这个问题。我在Windows上使用TortoiseSVN,因此不确定在命令行上将其转换为什么命令,但是我做了以下操作:

有问题的文件夹称为lib,并且已添加。

  • 首先,我取消添加,因此SVN不再关注它。
  • 然后,我libs使用Windows上下文菜单将其重命名(没有关系),添加它并成功提交。
  • 最后,我将其重命名为lib使用TortoiseSVN的上下文菜单(这可能很重要),然后再次提交。

3

我刚才也遇到了这个问题,并以此方式解决了。所以我在这里记录了下来,希望对其他人有用。

场景:

  1. 在提交代码之前,修订版:100
  2. (其他人提交了代码...修订版增加到199)
  3. 我(忘记运行“ svn up”,)提交代码,现在我的修订是:200
  4. 我运行“ svn up”。

发生错误。

解:

  1. $ mv current_copy copy_back#重命名当前代码副本
  2. $ svn checkout current_copy#再次签出
  3. $ cp copy_back / current_copy#恢复您的修改

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"

这是唯一可以确定的方法。
TomDestry 2014年

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

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

  1. 将文件夹复制到另一个位置。
  2. 从复制的文件夹中删除.svn
  3. 右键单击原始文件夹,然后选择“ SVN Checkout”
  4. 如果找不到(3),则您的案件与我的案件不同。
  5. 查看REPO-BROWSER上的目录是否正确。就我而言,这就是原因。
  6. 退房
  7. 将文件从复制的文件夹中取回原始目录。
  8. 承诺。

0

这意味着您要放在svn上的文件夹/文件已经存在。我的建议是,在执行任何操作之前,只需右键单击文件夹/文件,然后单击repo-browser。这样,您将可以查看svn上已经存在的所有文件/子文件夹等。如果svn上没有所需的文件/文件夹,则只需删除(在备份后)要添加的文件,然后运行更新。


0

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


0

我收到此错误,是因为我用新的URL地址替换了以“ /”结尾的地址。我的意思是在REPOSITORY表的.svn文件夹中的wc.db数据库中记录。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.