如何修复svn:'path / to / dir'不是工作副本目录

时间:2009-11-09 06:51:41

标签: svn

我正在尝试提交,我收到上面的错误。我在这里看到了几个相同的问题,但解决方案似乎总是“删除并重新结账”。我想第一次添加一些文件,所以我无法删除。我也试过删除文件,但后来我得到了这个错误:

svn: Directory '/path/to/dir' is missing

我认为问题最初源于权限错误 - 当我执行初始添加命令时,我没有权限编写.svn文件。我怎样才能解决这个问题?我唯一想到的就是从项目中清除所有.svn文件夹,然后重新导入到新的存储库中。的Bleh!

5 个答案:

答案 0 :(得分:1)

尝试重新拥有所有文件作为当前用户。 .svn个文件应由提交的任何用户拥有。如果您可以以root身份提交,那么这将是您遇到此问题的一个很好的指标。不要这样做,因为你将使你的subversion文件由root拥有,这意味着你的用户将无法提交。正确设置所有者,然后重试。

如果您确实检查了项目,并且现在正在收到该错误,则表明SVN不相信您处于有效的回购中。检查您的路径,检查您的权限,检查.svn文件的实际存在。

真的,解决这个问题最明智的方法是将编辑好的文件复制到其他地方,擦除你签出的目录,然后重新签出。如果尚未检查任何内容,请使用svn import命令。

答案 1 :(得分:1)

如果没有完整的背景,这个问题很难回答,但我会试一试。

我被迫做了几次是这样的:

  1. 查看一份新副本备份我的WC
  2. 删除我的WC中的所有.svn目录
  3. 使用我的WC文件覆盖(1)中的新副本。
  4. 提交
  5. 其他技术(当然是备份之后) 恢复WC,然后将编辑过的文件放入。 更新(在您的情况下可能不起作用)

    这很尴尬,如果有更好的方式,我也会非常有兴趣去学习它。

    由于删除/添加的文件的修订顺序错误,似乎出现了问题。

答案 2 :(得分:0)

我最好的猜测是你需要在目录层次结构中升级,然后从那里添加目录和文件,然后从那里提交。

答案 3 :(得分:0)

在进行/添加更改之前,您可以尝试使用svn revert -R首先回滚到上一版本。完成后,您可以从文件夹结构的最顶层再次运行svn add(我假设您可以在没有权限问题的情况下执行此操作。 在命令行客户端中,当您运行恢复时,您将从这些文件中取消“A”状态(假设那些让您对提交感到悲伤的状态)。所以现在这些文件“在版本控制之外”,尽管仍在您的工作区中。

您现在可以将它们移出并分阶段添加(现在您拥有正确的权限,它应该可以正常工作)。但我不知道你有多少文件,所以这可能不会有点混乱。

答案 4 :(得分:0)

FWIW,我结束了这个:

find . -name ".svn" -type d -exec rm -rf {} \;

删除所有.svn文件并重新导入。我没有失去任何历史,真的,所以这看起来最简单......

这里的其他几个答案似乎也是可行的。