如何在SVN中修复“包含工作副本管理区缺失”的问题?

186

我在我的代码库中离线手动删除了一个刚刚添加的目录,现在我无法恢复这个目录。

任何尝试进行更新或提交的操作都将失败,并显示:

"blabla/.svn" containing working copy admin area is missing.

我明白原因,但有没有办法解决这个问题。

我不想检出整个代码库并手动添加更改,那将耗费数小时。

21个回答

150

63
我很讨厌SVN。在版本控制史上,到处散落.svn子目录可能是最糟糕的想法。 - Johannes Fahrenkrug
9
大家好,请查看Rob提出的以下建议,它比当前的解决方案要简单得多。 - Mohammad Arif
Mohammed,谢谢你的提醒。这对我有用。我试图让SVN忽略一个日志目录,但删除了“.svn”后出现了问题。Rob的解决方案解决了这个问题。 - Asmor
Johannes,我也不是SVN的支持者,但是“.svn”目录的优点在于您可以检出存储库的子目录并保持版本控制。 - Joseph Persico
@MohammadArif,现在有两个“Robs”了。 - Charles Clayton
@CharlesClayton,我现在是指Rob Wells :) - Mohammad Arif

123

就我个人而言,我遇到了类似的情况,并使用了 svn --force delete __dir__ 命令。这为我解决了问题,然后我继续像往常一样使用我的工作副本。


2
这对我也起作用了。更新和清理失败,因为该目录从未在存储库中,但工作副本确信它处于版本控制下。我想知道是否添加了该目录,但然后在提交之前将其删除了? - Magnus
1
这非常好。我添加了一个目录,删除了 .svn 但从未提交过。这完全解决了问题。 - Eric
8
谢谢,这个答案节省了我很多时间。对于我来说,svn cleanup 然后 svn --force delete <目录-该目录不存在但应该存在> 起作用了。 - mpontillo
第二次尝试成功了,我第一次尝试时没有使用--force选项,这导致在父目录的.svn文件夹中留下了一个锁定文件,我不得不手动删除它。第二次使用--force选项解决了问题。 - Jörn Horstmann
谢谢。这完全解决了问题。强制删除然后重新添加目录对我有用。 - Shiun
3
嗯,这个命令只是给我返回了相同的“工作副本”错误。 - Oscar

73
我为解决这个问题所做的是删除有问题的文件夹的本地副本,然后直接在父文件夹上执行svn update命令。
很快就修复了。

3
我简直不敢相信……我尝试了所有的方法……结果竟然如此轻松!!!它完美地起作用了,非常感谢!!!!! - lucaferrario
这是最直接的答案。 - joaerl

35

你可以尝试获取父目录的新副本吗?

编辑:更具体地说,我建议上一级并删除包含该目录的目录。然后执行

svn update --set-depth infinity
替换目录。

我尝试过了,但出于某种奇怪的原因,最终我得到了一个空目录。我不明白... - Bite code
父级目录中的显式<code>svn update blabla</code>也应该可以工作。 - jmanning2k
@jmanning2k,我也是这样想的,但OP说他已经尝试过了,但没有成功。 - Rob Wells
澄清一下,我建议使用“--set-depth infinity”的原因是这个:https://dev59.com/cUfRa4cB1Zd3GeqP-ZhG - Wim Coenen
太棒了,问题解决了,我认为这应该是被接受的答案,因为不需要进行checkout并复制.svn文件夹。 - Mohammad Arif
1
这个解决方案需要更多的赞...快速而且相对(对于svn标准来说)干净。 - Dino

6

我向svn添加了一个目录,然后不小心删除了其中的.svn文件夹。

我使用了

svn delete --keep-local folderName

为了解决我的问题。

当我的IDE添加了一个目录,然后我移动了一个同名的目录到它的位置之前提交时,这对我起作用了。 - quellish
尝试过这个方法,但仍无法提交。我使用了 svn checkout --force [url] 命令来重新创建 .svn 文件夹。 - Lex

4

我刚刚执行了“svn revert /blabla”命令,它起作用了,文件夹已经恢复,现在我可以使用“svn delete”命令删除它。


谢谢。我遇到了这个问题,尝试了你的建议,它起作用了。 - Boric

3
当我尝试将该目录添加到存储库中时,出现了“目录'blah/.svn'包含的工作副本管理区域丢失”的错误,但是我没有足够的文件系统权限来执行此操作。该目录尚未在存储库中,但在添加失败后,它声称已处于版本控制下。
将父目录的副本检出到另一个位置,并替换工作副本父目录中的 .svn 文件夹后,我成功地添加并提交了新目录(当然,在修复文件权限之后)。

2

我们使用Maven和SVN。这是一个错误的检入目标目录到SVN导致了这个错误。如果这个提示能帮到任何人,只需删除它就可以解决所有问题。


从哪里准确地移除什么? - DerMike
Maven 在构建时会创建 "target" 目录,通常不应该将其检入。一次意外检入导致了下一次检出的权限问题,从而产生了这个错误。从 SVN 中删除 "target" 目录解决了这个问题。 - Madu

2

我尝试了svn rm --force /path/to/dir,但没有效果,最后只是运行了svn up,问题就解决了。


1

我曾经遇到过同样的问题,当我尝试切换到"C:\superfolder"时

错误信息:

Directory 'C:\superfolder\subfolder\.svn'
containing
working copy admin area is missing
Please execute the 'Cleanup' command.
尝试进行“清理”后,我收到了以下错误:
 Cleanup failed to process the following paths:
 C:\superfolder\
'C:\superfolder\subfolder\' is not a working copy directory

解决方案:

  1. 删除文件夹 "subfolder"
  2. 清理文件夹 "superfolder"
  3. 尝试再次切换到文件夹 "superfolder"

这对我有用。 如果对您也有用,请告诉我。


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