2009-11-09 64 views
2

我正在尝试做一个提交,并且出现上述错误。我在这里看到了几条相同的问题,但解决方案似乎总是“删除并重新签出”。我想第一次添加一些文件,所以我不能删除。我也尝试了删除文件,但后来我得到这个错误,而不是:如何修复svn:'path/to/dir'不是工作副本目录

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

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

+0

您是否尝试重新尝试目录上的“添加”命令?如果目录本身存在于存储库中,'update'应该将其恢复并保留文件...备份它们以防万一;-) 不作为答案原因留下,我还没有测试过。 – Grundlefleck 2009-11-10 11:47:34

回答

0

您可以尝试svn revert -R在您做出/添加更改之前首先回滚到最新版本。一旦完成,你可以从最高级别的文件夹结构再次运行一个svn add(我假设你能够在没有许可问题的情况下做到这一点) 在命令行客户端,当你运行回复时,你会敲从这些文件中取消“A”状态(假设这些文件是让你感到担忧的文件),所以现在这些文件仍然处于“版本控制之外”,尽管它仍然在工作区中。

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

+0

将恢复命令删除我的非COMITED文件? – sprugman 2009-11-09 13:46:05

+0

对不起 - 以前没有看到您的问题,不,它不应该删除您添加的文件。它应该将状态从“已添加”恢复为“未版本化” - 但是如果您像我一样,您宁愿保持安全也不愿意,所以我会在将其复制到其他地方以便保管时尝试使用一个文件 - 就像这样svn恢复“文件名”。或者,也许你现在已经发现了更好的东西 - 所以不要忘了发布你的决议。好奇知道什么工作 – 2009-11-10 04:14:10

0

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

1

尝试以您当前的用户身份重新拥有所有文件。 .svn文件应由任何用户进行提交所拥有。如果你可以以root身份提交,那么这将是一个很好的指示器,你有这个问题。不要这样做,因为你会使你的rootversion所拥有的Subversion文件,这意味着你的用户将无法提交。正确设置所有者并重试。

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

真的,你最确定的解决问题的方法是将编辑好的文件复制到其他地方,擦掉签出的目录,然后重新签出。如果您还没有检查任何回购,请使用svn import命令。

1

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

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

  1. 退房的全新副本备份我的WC
  2. 删除我的WC所有.svn目录
  3. 覆盖的全新副本在(1)与我的WC文件。
  4. 提交

其它技术 还原WC(制作过程的备份之后),然后把编辑的文件英寸 更新(这可能不会工作你的情况)

这是非常尴尬,如果有更好的方法,我会非常有兴趣了解它。

由于删除/添加的文件顺序错误,修正了这个问题。

0

FWIW,我结束了使用此:

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

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

其他几个答案似乎也可行。