尝试进行svn checkout,但出现错误:svn: '.'已经是不同URL的工作副本

18

我想要将svn checkout到我的public_html文件夹中,但是我遇到了这个错误: svn: '.' 是不同URL的一个工作副本

我哥哥已经为我设置了一个样板网站,但是我改变了它,并将这些更改放入了我自己的repo中。如何使该文件夹不是原始设置的那个repo的工作副本?

我可以删除public_html文件夹并创建一个新的吗?我可以从头开始,因为我只是要将已安装的Drupal网站checkout到此站点。

我在另一个问题中看到,解决方法可能是简单地删除 .svn目录。我尝试了这个方法,但是它说 .svn中的几个子目录没有权限。

非常感谢您提供帮助,希望这个问题不会太蠢...


2
如果您没有删除public_html/.svn的权限,则也无法删除public_html。 - rodion
SVN命令行!你应该完全使用Tortoise SVN http://tortoisesvn.net/downloads - user34537
7个回答

10

你可以尝试使用 "svn switch" 命令。在 http://svnbook.red-bean.com/en/1.0/ch04s05.html 的示例中,只需执行以下命令:

 $ svn switch http:// svn.example.com/repos/calc/branches/my-calc-branch

但既然您遇到了子目录权限问题,重新创建public_html似乎是最好的解决方案。只是要小心使用“rm”命令时可能会出现的拼写错误。尝试使用“mv”命令来将旧目录移开,这不依赖于子目录权限。

您可以使用:

 $ mv public_html old_public_html
 $ mkdir public_html
 $ chmod 755 public_html
 $ cd public_html
 $ svn checkout url

6

如果时间紧迫,以下命令序列应该可以解决问题。

肯定有一种方法可以更新工作副本的引用URL,但我暂时不知道。

$ svn diff > ../changes.patch
$ rm -rf * ..?*
$ svn checkout url
$ patch -p < ../changes.patch

1
这是(大约)svn switch。从谷歌跳转到这里的人可能想查看https://dev59.com/Z3NA5IYBdhLWcg3wgeId#933468。 - Florian Winter

1

我认为你的最佳选择是删除该文件夹并重新创建,在从SVN检出时进行操作。


1
如果您不需要与您兄弟的存储库连接,那么只需删除他所有的.svn目录即可。
权限问题与SVN无关,这是肯定的。

0
我在另一个问题中看到解决方法可能是简单地删除 .svn 目录。我尝试了这个方法,但是它说对于 .svn 中的几个子目录权限被拒绝。
即使您无法删除目录,仍可以将其移开。
$ mv .svn /tmp/dustbin

编辑:

您至少应该拥有对您的主目录的写入权限:

$ mv ~/public_html /tmp/dustbin
$ mkdir ~/public_html

0
我刚在Eclipse 3.5中遇到了这个错误(“...已经是不同URL的工作副本”)。我试图从Eclipse“SVN Repository Exploring”透视图(来自tigris.org的Subclipse子版本控制客户端适配器)检出项目的特定分支。我已经进入了我感兴趣的[project] | branches | [branch],然后右键单击我感兴趣的分支并选择Checkout,结果导致了这个错误。
对我来说,解决方法是转而进入“Java EE”透视图,右键单击我的项目,并从上下文菜单中选择Replace With | Branch/Tag...。这样做,我成功地下载了我感兴趣的分支。

“Replace With | Branch/Tag…” 可能是 Eclipse 对 SVN SWITCH 的称呼(请参见下文)。如果有任何 Eclipse/SVN 专家能够确认这一点,将使本主题更加清晰。 (在我看来,“switch” 正是此处所需的,它就是为了解决这种情况而设计的。) - johanekdahl

0
我发现,如果我只是进入J2EE透视图,右键单击项目,然后在尝试检出新分支之前选择删除,就可以解决这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接