SVN - 不是工作副本错误

时间:2008-12-15 12:56:58

标签: svn aptana working-copy

我正在把头发拉出来。

我有一个使用Subversion进行版本控制的网站。我使用aptana(eclipse,subclipse)来做svn。我一直在检查和退出文件,更新等一切都很好。但是,我们构建的系统一直在添加自己的文件和文件夹。

当我尝试提交这些时,它告诉我<path>不是工作副本。如果我尝试进行清理,那么它会给出相同的错误。我发现我可以手动将每个文件添加到版本控制,但这会引发相同的错误。执行更新没有帮助,刷新工作区也没有做任何事情。错误后清理似乎消失,然后目录被锁定。

我知道您应该使用SVN添加文件,但是如何使用生成的文件呢?如何绕过这个“<folder>不是工作副本目录”错误?如何让Subversion只查看文件并将它们添加到其存储库?

10 个答案:

答案 0 :(得分:26)

我今天遇到这个问题时,我试图添加一个文件夹“A”,其中我没有写入权限(因此无法创建A / .svn文件夹)。

运行svn状态在文件夹A旁边给了一个“〜”。 运行svn cleanup说A的父母被锁定了。

最终工作的是:

cp -r A A~    # backup, since A was not in the repo
rm -rf A      # removed locked directory
svn rm A      # remove A from pending commit
mv ~A A       # restore backup
svn add A     # re-add to pending commit
svn cleanup   # (had to cleanup several parent folders higher as well)

答案 1 :(得分:20)

如果要将生成的文件添加到SVN,请使用svn add递归添加它们 - 这将确保所有目录都是工作副本的一部分,并且所有文件和目录都添加到SVN,并将作为下一个svn commit

的一部分提交

但是,通常生成的文件和文件夹不应添加到SVN,因为它们是作为构建的一部分从源文件生成的。在这种情况下,您应该使用svn:ignore标记,以便它们不属于工作副本。

答案 2 :(得分:11)

不是工作副本错误表示当前文件夹未被 SVN 正确初始化。

要修复错误,只需重命名当前文件夹,然后 SVN 获取项目的正确工作副本,方法是执行结帐该项目。

签出将创建该项目的正确配置的工作副本。

答案 3 :(得分:2)

我刚刚在我的工作副本中遇到了“非工作副本”错误。这是一个JDeveloper项目,结果是我刚安装的JDeveloper升级(11.1.1.2.0)包含了SVNKit的更高版本,而不是我用于命令行SVN访问(jsvn)的版本。因此,JDeveloper已经悄然升级了.svn文件的格式,这意味着命令行客户端无法理解它们。 当jsvn在我项目的顶级目录中抱怨丢失文件“.svn / format”时,便士掉了下来。我在子文件夹中找到了大量的内容,所有内容看起来都相同,只包含数字“9”。所以我将一个复制到顶级文件夹中,然后jsvn最终给出了一个适当的消息:“svn:这个客户端太旧了,无法使用工作副本'。';请获得更新的Subversion客户端”。 一旦我确定(通过谷歌)并安装了兼容的客户端SVNKit级别,新改进的jsvn就能够识别出我的工作副本实际上是一个工作副本。 故事的道德:如果你得到这个错误并且你在同一台机器上使用不同的SVN客户端,问题可能是他们已经不同步了。

答案 4 :(得分:1)

现在使用TortoiseSVN清理一些死目录。我对这些文件进行了备份,然后使用rep浏览器删除了有问题的dir(无论如何都是goner)。然后清理项目工作,我现在可以继续使用我当前的文件。

答案 5 :(得分:1)

请尝试找出问题所在。这是缺少的.svn文件还是别的。 请记住,完成签入后会创建.svn文件。并包含相应的目录路径,代码名称带有标记的唯一编号。 转到您认为完美检查的项目的基本路径。 创建一个新的临时包并在该路径中添加示例Java代码。 添加到版本并尝试提交。 如果您收到错误消息说该文件夹已被锁定(尝试锁定已锁定的文件夹),请转到.svn文件夹并重命名该锁定文件。 再次尝试签入并提交

如果它工作正常,那么你就完成了。 使用相同的基本目录,并在清理后再次从该目录检查代码到文件夹级别。

答案 6 :(得分:0)

在我的情况下,我将eclipse工作空间移到另一个地方然后出现了问题。为解决问题我从svn repo结账项目。然后在旧项目中我清理所有svn文件。 (简单搜索.svn和删除)然后我将内容复制到刚签出的内容,我的更改变得可见,我的项目是最新的。该方法可以应用于其他恼人的错误。希望能帮助别人

答案 7 :(得分:0)

move其他位置的当前目录,并执行svn update命令,然后将目录替换为已移动的目录
如果使用tortoisteSVN,则可以在运行svn update之前运行清理根目录

答案 8 :(得分:0)

“不是工作副本”意味着您尝试运行svn的IDE的其中一个地方不受svn本身的控制(比如在不在{{}下的子目录中添加文件{1}})。我会说在IDE中检查你的路径。

答案 9 :(得分:0)

因为我使用可视化工具完成所有任务,所以我无法告诉您需要执行哪些命令。

这是我的环境,Windows XP。使用Subversion 1.6.9的tortoiseSVN 1.6.7,使用Subclipse 1.6.10的Eclipse 3.5。并使用Windows上的可视SVN服务器管理存储库。

  1. 在visual svn服务器中,我删除了由其他工具创建的文件夹(这就是问题,就像Keltia说的那样)。
  2. 在我的Windows资源管理器中右键单击我的项目,并使用tortoise SVN的选项按更新。通过此操作,文件夹已在我的工作副本中删除。
  3. Commited 我的所有更改。
  4. 运行了创建文件夹的工具(再次)。
  5. 使用tortoise SVN我标有添加到忽略列表
  6. 希望这有帮助。