SVN:文件夹已经在版本控制下但没有提交吗?


111
mark@mark-ubuntu:~/myproject$ svn stat
?       runserver.sh
?       media/images/icons
?       apps/autocomplete
mark@mark-ubuntu:~/myproject$ svn add apps/autocomplete
svn: warning: 'apps/autocomplete' is already under version control

svn stat说它不在版本控制下,所以我尝试添加它,然后告诉我它是。当我执行时svn ci,它不会断断续续,并且当我尝试在线浏览存储库时也不会显示。

我该如何提交?


3
“自动完成”文件夹是否包含损坏的“ .svn”子目录?还有,你打扫过吗?:)
bzlm 2011年

1
您是否尝试过:svn清理,只是在黑暗中被刺?
shaunhusain 2011年

我将签入目录复制到项目中的另一个文件夹时遇到了这个问题。删除旧的.svn作品!
paulrehkugler 2013年

我强行添加了files:,svn add --force /path/to/file或者如果要递归添加目录:svn add --depth infinity --force /path/to/directory
Joker

Answers:


162

将有问题的文件夹复制到某个备份目录中,并将其从SVN工作目录中删除。记住.svn要从复制的文件夹中删除所有隐藏的目录。

现在更新您的项目,清理并提交剩下的内容。现在将文件夹移回到工作目录,添加并提交。大多数情况下,这种解决方法都有效,似乎SVN基本上感到困惑...

更新:引用@Mark的评论:

不需要移动文件夹,只需删除.svn文件夹,然后svn添加即可。


52
不需要移动文件夹,只需删除.svn文件夹,然后svn添加即可。
mpen 2011年

6
+1是我的一天;-)正如Mark所说,对我来说,删除有问题的文件夹中的.svn目录就足够了。
rturrado11年

23
感谢您将SVN标识为完全BS。
史蒂夫·K

1
现在您仅在顶层文件夹中拥有.svn,您将无法执行此BS,如果元数据已损坏,则您敬酒
Kalpesh Soni 2014年

如果已
提交,则从

20

添加包含.svn目录的目录树后,我遇到了类似的问题(因为它是源环境中的svn:external):svn status告诉我“?”,但是在尝试添加时,它已经“已经”在版本控制下”。

由于没有其他版本的目录,所以我做了

find . -mindepth 2 -name '.svn' -exec rm -rf '{}' \;

删除错误的.svn目录;完成此操作后,我可以添加新目录。

注意事项

  • 如果包含其他版本化目录,则必须将find表达式更改为更具体
  • 如果不确定,请首先省略“ -exec ...”部分以查看将要删除的内容

虽然这个答案对我有用,但是当我第一次使用它时,我在错误的文件夹中,事情变得一团糟。似乎是一个提醒人们“两次测量,一次切割”的好地方,即在运行此之前仔细检查细节。
BishopZ 2013年

我建议使用“如果不确定”, ... -exec echo {} \;这样您就可以使-exec开关也正常工作。
FlipMcF 2015年

还建议将a添加-type d到查找中。叫我挑剔,直到你rm -rf走得太远。除了我的挑剔-我认为这是正确的答案。
FlipMcF 2015年

15

@ gauss256的答案的一个变体(删除.svn)对我有用

rm -rf troublesome_folder/.svn
svn add troublesome_folder
svn commit

在高斯解决方案之前,我尝试了@ jwir3的方法,但并没有感到高兴:

svn cleanup
svn cleanup *
svn cleanup troublesome_folder
svn add --force troublesome_folder
svn commit

14

(1)这只是发生在我身上,我觉得很有意思如何发生的。基本上,我已将文件夹复制到新位置并对其进行了修改,但忘记了它将带走所有隐藏的.svn目录。一旦您意识到它是如何发生的,将来就更容易避免。

(2)删除.svn目录是解决方案,但是您必须从目录树开始一直递归执行。最简单的方法是:

find troublesome_folder -name .svn -exec rm -rf {} \;

3

您是否尝试过执行svn清理?


2
我也遇到了这个问题。然后尝试svn cleanup,并没有帮助它。
2011年

3

检查目录“ apps / autocomplete / .svn”。将其移动到安全的地方(以防万一您无法恢复它,因为这不起作用),然后查看是否可以解决问题。


0

我发现了一个解决方案,以防您已将SVN Client JavaHL(JNI)1.8.13和Tortoise安装到Eclipse(Luna)

打开Eclipse:首先尝试将项目/ maven模块添加到版本控制中(项目->上下文菜单->团队->添加到版本控制)

您将看到以下Eclipse错误消息:

org.apache.subversion.javahl.ClientException:条目已存在svn:'PathToYouProject'已受版本控制

之后,您必须在资源管理器中打开工作区目录,选择您的项目并通过Tortoise对其进行解析(Project-> Context Menu-> TortoiseSVN-> Resolve)

您将看到以下消息对话框:“ 文件列表为空

按取消并在Eclipse中刷新项目。您的项目应该再次处于版本控制之下。

不幸的是,不可能同时解决一个项目更多……您不必删除任何内容,但是根据项目的大小,这可能会有些费力。


0

对我来说,进行svn更新,然后执行svn commit可以。没有添加失败的文件夹中的.svn文件夹。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.