122

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

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

我已经运行了无数次清理、提交、更新等。没有什么能解决这个问题。想法?

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

4

11 回答 11

170

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

于 2010-08-30T15:30:29.953 回答
56

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

所以,取文件夹 1 并制作一个文件夹 1 副本:

svn delete folder1
svn add folder1Copy

提交和更新:

svn mv folder1Copy/ folder1/

再次提交,它是固定的。

于 2011-11-08T03:02:33.173 回答
10

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

如果我删除它,然后运行更新,它不会出现。

cd libaries
svn up

(没发生什么事)。

但用实际名称更新:

svn update fof

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

于 2013-05-15T13:45:49.307 回答
4

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

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

  • 首先我取消了添加,因此SVN不再关注它。
  • 然后我使用 Windows 上下文菜单将其重命名(改为libs,并不重要),添加它并成功提交。
  • 最后我将它重命名为lib使用 TortoiseSVN 的上下文菜单(这可能很重要),并再次提交。
于 2011-09-01T15:45:04.180 回答
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 # 恢复你的修改
于 2011-09-09T08:16:38.257 回答
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"
于 2011-11-08T21:51:29.277 回答
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东西。

现在会好的。

于 2014-06-27T08:26:16.850 回答
0

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

于 2013-04-02T06:45:31.023 回答
0

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

  1. 将文件夹复制到另一个地方。
  2. 从复制的文件夹中删除 .svn
  3. 右键单击原始文件夹并选择“SVN Checkout”
  4. 如果您找不到(3),那么您的情况与我的情况不同。
  5. 查看 REPO-BROWSER 上的目录是否正确。就我而言,这就是原因。
  6. 查看
  7. 将复制文件夹中的文件取回原始目录。
  8. 犯罪。
于 2013-12-31T16:02:38.267 回答
0

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

于 2014-11-10T12:49:04.807 回答
0

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

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

于 2020-04-26T23:39:44.563 回答