【问题标题】:SVN 405 Method Not AllowedSVN 405 方法不允许
【发布时间】:2011-04-05 19:48:40
【问题描述】:

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

svn:服务器发送了意外的返回值(405 Method Not Allowed)以响应 '/svn/www/!svn/wrk/9de0d765-2203-456c-af16-58e792ec7ac0/trunk/htdocs/solutions/medical 的 MKCOL 请求'

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

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

【问题讨论】:

  • 我在尝试删除子目录时也尝试这样做,以便可以正确忽略它。不知何故,它自己解决了,我真的不知道元素的什么神秘组合恰好允许这个,所以我放弃了我的问题。我的新问题是:为什么我们不都使用git

标签: svn http-status-code-405


【解决方案1】:

我的猜测是您尝试添加的文件夹在 SVN 中已经存在。您可以通过将文件签出到不同的文件夹来确认,看看trunk是否已经有所需的文件夹。

【讨论】:

  • 我确实在另一个签出版本上验证了这一点。为什么我的工作副本不会随之更新,我无法确定。
  • 这里也是这种情况,但我必须在一个单独的文件夹中检查该文件夹(或者更确切地说,我将其重命名为“foo”并 svn up'd 并将其取回,包括“已删除”文件夹,尽管我已成功提交删除它。)
  • @Shaji :我理解你的情况。但是由于这个错误,我如何仍然可以承诺?或者有什么事情要做,请告诉我。谢谢。
  • 对文件夹进行 SVN 更新,然后再次尝试提交。
  • 这是一个恼人的错误。我从 Github 签出了一个新的存储库并提交了一个新文件夹。它总是显示相同的错误。尝试了您的解决方案,但它不起作用。
【解决方案2】:

我刚刚在我自己的存储库中修复了这个问题。我在 Windows 上使用 TortoiseSVN,所以我不确定这会在命令行上转换成什么命令,但这是我所做的:

有问题的文件夹名为lib,它应该被添加。

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

【讨论】:

    【解决方案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 # 恢复你的修改

    【讨论】:

      【解决方案4】:

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

      所以,取文件夹1,制作文件夹1的副本:

      svn delete folder1
      svn add folder1Copy
      

      提交和更新:

      svn mv folder1Copy/ folder1/
      

      再次提交,问题就解决了。

      【讨论】:

      • 这对我来说非常有用,而且比处理第二个工作副本要简单得多。
      • 希望commit & update 不是文字命令行...在 Unix 中会尝试并行执行。
      • 非常棒的先生,如果你来森尼韦尔并以某种方式找到我,我会给你买咖啡。
      【解决方案5】:

      我遇到了类似的问题。我最终从轨道上对其进行了核对,并在此过程中丢失了我的 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"
      

      【讨论】:

      • 这是唯一确定的方法。
      【解决方案6】:

      当前添加的目录已在存储库中提交。所以删除存储库中的目录并再次提交相同的目录。

      【讨论】:

        【解决方案7】:

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

        如果我删除它,然后运行更新,它就不会显示。

        cd libaries
        svn up
        

        (什么都没有发生)。

        但用实际名称更新:

        svn update fof
        

        成功了,它被更新了。所以我在它上面分解了我的(手动 tar 归档的)工作副本并重新提交。最简单的解决方案。

        【讨论】:

        • 同意这是最简单的。只需执行“svn up [folder]”而不是“svn up”。
        • 这个解决方案对我有用。谢谢。
        【解决方案8】:

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

        1. 将文件夹复制到其他位置。
        2. 从复制的文件夹中删除 .svn
        3. 右键单击原始文件夹并选择“SVN Checkout”
        4. 如果您找不到 (3),那么您的情况与我的情况不同。
        5. 查看 REPO-BROWSER 上的目录是否正确。就我而言,这就是原因。
        6. 退房
        7. 将复制文件夹中的文件取回原目录。
        8. 提交。

        【讨论】:

          【解决方案9】:

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

          现在就好了。

          【讨论】:

            【解决方案10】:

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

            【讨论】:

              【解决方案11】:

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-12-20
                • 2023-03-23
                • 2011-06-21
                • 2014-05-23
                • 2011-04-03
                • 1970-01-01
                相关资源
                最近更新 更多