我正在把头发拉出来。
我有一个使用Subversion进行版本控制的网站。我使用aptana(eclipse,subclipse)来做svn。我一直在检查和退出文件,更新等一切都很好。但是,我们构建的系统一直在添加自己的文件和文件夹。
当我尝试提交这些时,它告诉我<path>
不是工作副本。如果我尝试进行清理,那么它会给出相同的错误。我发现我可以手动将每个文件添加到版本控制,但这会引发相同的错误。执行更新没有帮助,刷新工作区也没有做任何事情。错误后清理似乎消失,然后目录被锁定。
我知道您应该使用SVN添加文件,但是如何使用生成的文件呢?如何绕过这个“<folder>
不是工作副本目录”错误?如何让Subversion只查看文件并将它们添加到其存储库?
答案 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)
“不是工作副本”意味着您尝试运行svn
的IDE的其中一个地方不受svn
本身的控制(比如在不在{{}下的子目录中添加文件{1}})。我会说在IDE中检查你的路径。
答案 7 :(得分:0)
因为我使用可视化工具完成所有任务,所以我无法告诉您需要执行哪些命令。
这是我的环境,Windows XP。使用Subversion 1.6.9的tortoiseSVN 1.6.7,使用Subclipse 1.6.10的Eclipse 3.5。并使用Windows上的可视SVN服务器管理存储库。
希望这有帮助。
答案 8 :(得分:0)
在我的情况下,我将eclipse工作空间移到另一个地方然后出现了问题。为解决问题我从svn repo结账项目。然后在旧项目中我清理所有svn文件。 (简单搜索.svn和删除)然后我将内容复制到刚签出的内容,我的更改变得可见,我的项目是最新的。该方法可以应用于其他恼人的错误。希望能帮助别人
答案 9 :(得分:0)
请move
其他位置的当前目录,并执行svn update
命令,然后将目录替换为已移动的目录
如果使用tortoisteSVN
,则可以在运行svn update之前运行清理根目录