26

我正在把头发拉出来。

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

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

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

4

10 回答 10

26

今天当我尝试添加一个我没有写权限的文件夹“A”时遇到了这个问题(因此它无法创建 A/.svn 文件夹)。

运行 svn status 在文件夹 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)
于 2009-05-05T17:53:13.697 回答
20

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

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

于 2008-12-15T13:07:06.293 回答
11

not a working copy 错误意味着当前文件夹没有被SVN正确初始化。

要修复错误,只需重命名当前文件夹,然后通过检出项目从SVN获取项目的正确工作副本

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

于 2008-12-16T13:27:00.620 回答
2

我刚刚在我的工作副本中遇到“不是工作副本”错误。这是针对一个 JDeveloper 项目的,结果发现我刚刚安装的 JDeveloper 升级 (11.1.1.2.0) 包含的 SVNKit 版本比我用于命令行 SVN 访问 (jsvn) 的版本更高。所以 JDeveloper 悄悄地升级了 .svn 文件的格式,这意味着命令行客户端无法理解它们。当 jsvn 抱怨我项目的顶级目录中缺少文件“.svn/format”时,一分钱就掉了。我在子文件夹中发现了一堆这些,看起来都一样,并且只包含数字“9”。所以我将一个复制到顶级文件夹中,然后 jsvn 最后给出了一条适当的消息:“svn:这个客户端太旧了,无法使用工作副本'。';

于 2009-11-17T15:52:51.550 回答
1

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

于 2010-02-13T07:42:26.497 回答
1

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

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

于 2011-09-01T23:00:03.613 回答
0

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

于 2008-12-15T13:00:57.350 回答
0

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

这是我的环境,Windows XP。带有 Subversion 1.6.9 的 tortoiseSVN 1.6.7,带有 Subclipse 1.6.10 的 Eclipse 3.5。并且存储库通过 Windows 上的可视 SVN 服务器进行管理。

  1. 在视觉 svn 服务器中,我删除了由其他工具创建的文件夹(这就是问题所在,就像 Keltia 所说的那样)。
  2. 在我的 Windows 资源管理器中,右键单击我的项目并使用 tortoise SVN press update选项。通过此操作,该文件夹在我的工作副本中被删除。
  3. 提交了我所有的更改。
  4. 运行创建文件夹的工具(再次)。
  5. 用乌龟 SVN 我用添加到忽略列表标记。

希望这可以帮助。

于 2010-04-15T17:14:50.703 回答
0

就我而言,我将 eclipse 工作区位置移动到另一个位置,然后出现问题。为了解决问题,我从 svn repo 签出项目。然后在旧项目中我清理所有 svn 文件。(简单搜索 .svn 并删除)然后我将内容复制到刚刚签出的内容中,我的更改变得可见并且我的项目是最新的。此方法可应用于其他烦人的错误。希望帮助某人

于 2014-01-24T08:15:46.040 回答
0

请将move当前目录放在另一个位置,然后执行svn update命令,然后用移动的目录替换目录,
如果使用tortoisteSVN,你可以在运行 svn update 之前,运行清理你的根目录

于 2016-08-28T06:35:00.007 回答