我不小心删除了 SVN 中的一个文件夹并立即将其添加回来。我遇到了这个问题,我的解决方案最终从我的本地副本和服务器副本中完全删除了该文件夹。我可以对任何其他文件或文件夹进行更新和提交而不会出现问题,但是如果我尝试创建一个具有相同名称、添加和提交的文件夹,它会给我以下错误:
svn:服务器发送了意外的返回值(405 方法不允许)以响应 '/svn/www/!svn/wrk/9de0d765-2203-456c-af16-58e792ec7ac0/trunk/htdocs/solutions/medical' 的 MKCOL 请求
我已经运行了无数次清理、提交、更新等。没有什么能解决这个问题。想法?
仅供参考,我没有重命名顶级文件夹的选项。
git
?
我的猜测是您尝试添加的文件夹已经存在于 SVN 中。您可以通过将文件签出到不同的文件夹来确认,看看trunk是否已经有所需的文件夹。
我修复它的最快方法是复制受影响的文件夹,并使用替代名称提交它。然后svn mv duplicateFolder originalFolder
。相当容易。
所以,取文件夹 1 并制作一个文件夹 1 副本:
svn delete folder1
svn add folder1Copy
提交和更新:
svn mv folder1Copy/ folder1/
再次提交,它是固定的。
commit & update
不是文字命令行......在 Unix 中,它会尝试并行执行两者。
我的“消失”文件夹是 libraries/fof
。
如果我删除它,然后运行更新,它不会出现。
cd libaries
svn up
(什么都没发生)。
但用实际名称更新:
svn update fof
成功了,它被更新了。所以我在它上面分解了我的(手动 tar 归档的)工作副本并重新提交。最简单的解决方案。
我刚刚在我自己的存储库中修复了这个问题。我在 Windows 上使用 TortoiseSVN,所以我不确定这在命令行上转换为哪些命令,但这是我所做的:
有问题的文件夹称为 lib
,它应该被添加。
首先我取消了添加,因此SVN不再关注它。
然后我使用 Windows 上下文菜单将它重命名(改名为 libs,这并不重要),添加它并成功提交。
最后,我使用 TortoiseSVN 的上下文菜单将它重命名为 lib(这可能很重要),然后再次提交。
刚才我也遇到了这个问题,就这样解决了。所以我把它记录在这里,希望对其他人有用。
设想:
在我提交代码之前,修订版:100(其他人提交代码......修订版增加到 199)我(忘记运行“svn up”,)提交代码,现在我的修订版:200 我运行“svn up”。
发生错误。
解决方案:
$ mv current_copy copy_back # 重命名当前代码副本 $ svn checkout current_copy # 再次检查 $ cp copy_back/ current_copy # 恢复你的修改
我有一个类似的问题。我最终从轨道上对其进行了核对,并在此过程中丢失了我的 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"
如果您使用 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 右键单击原始文件夹并选择 'SVN Checkout' 如果找不到 (3),那么您的情况与我的情况不同。查看 REPO-BROWSER 上的目录是否正确。就我而言,这就是原因。查看将复制文件夹中的文件取回原始目录。犯罪。
这意味着您尝试放在 svn 上的文件夹/文件已经存在。我的建议是,在做任何事情之前,只需右键单击文件夹/文件,然后单击 repo-browser。通过这样做,您将能够看到 svn 上已经存在的所有文件/子文件夹等。如果 svn 上不存在所需的文件/文件夹,那么您只需删除(备份后)您要添加的文件,然后运行更新。
当前添加的目录已在存储库中提交。所以删除存储库中的目录并再次提交相同的目录。
我收到此错误是因为我将 URL 地址替换为以“/”结尾的新地址。我的意思是在 REPOSITORY 表的 .svn 文件夹中的 wc.db 数据库中记录。
当我删除符号:“/”时,错误就消失了。