为什么 Subclipse 仅在某些 Ecliplse 工作区中工作,而在其他工作区中不起作用?
题
我正在使用 Eclipse 和 Subclipse 进行一些 Perl 开发。Subversion 存储库的设置如下:
- /仓库/仓库/开发/
- /repos/dev/crontabs
- /repos/dev/crontabs/script1
- /repos/dev/crontabs/script2
- /repos/dev/守护进程
- /repos/dev/daemons/script3
- /repos/dev/daemons/script4
- /repos/dev/工具
- /repos/dev/tools/script5
- /repos/dev/tools/script6
在文件系统上,我在 ~/dev 本地检查了整个 /repos/dev 树,并创建了三个 Eclipse 工作区,分别位于“~/dev/crontabs”、“~/dev/daemons”和“~dev”中/工具”。
这就是事情变得奇怪的地方。在守护进程和工具工作区中,SVN 可以正常工作。我看不到 .svn 目录,但我可以执行所有各种 SVN 操作(例如团队对话框中的提交、更新、清理)。但是,SVN 无法在“crontabs”工作区中工作。.svn 目录可见,并且 SVN 对话框选项均不可用。
在所有目录中,我可以使用命令行 SVN 工具,一切正常。
以下是更多详细信息。
- Mac OS X 10.5.6
- Eclipse 平台 - 版本:3.4.2 - 构建 ID:M20090211-1700
- SVNKit 库 1.2.2.5405
- SVNKit 客户端适配器 1.5.6.1
- 子剪辑 1.4.8
- 史诗0.5.46
我尝试删除 deameons .metadata 和 realted .profile 文件以尝试清除它并启动一个新的工作区,但这不起作用。
有人以前见过这种类型的行为和/或知道一种方法让 SVN 命令在所有工作区而不是其中一些工作区中工作吗?
更新:我还应该提到,/dev 目录中还有很多我不使用 Eclipse 的其他资源。因此,我将命令行 SVN 工具与 Eclipse 中的 SVN 功能结合使用。所有内容最初都是使用命令行工具检查的,然后我只使用 Eclipse 进行提交。让我困惑的是为什么它在两个子目录中工作,但在第三个子目录中却不起作用,而命令行却 100% 工作。
解决方案
当您切换工作空间时,所有设置等都将被更改。来自其他工作区的信息将被忽略。
不要检查整个主干并创建 3 个与存储库结构一致的工作区,而是创建 3 个工作区,然后将存储库的相关部分作为每个工作区的项目检出。
其他提示
当您创建新项目并向其中导入文件时,Eclipse 不会假定项目是受版本控制的。您必须使用项目团队 -> 共享项目... 明确地告诉它对话。
选择正确的目录后,Eclipse 应该告诉您该项目已在该位置共享,但无论如何都要在 Eclipse 中激活它的 SVN 命令。
我不确定我是否完全遵循了这一切。而且 Subclipse 插件并不像 CVS 插件那么完善。但是,如果您将项目复制到工作区并且它包含 Subversion 上下文(.svn 文件夹),正如 Bemose 指出的那样,这对 Subclipse 来说没有意义。
理论上,当您使用 Team/Share 并收到警告消息时,您可以给予许可,它将删除现有的 .svn 文件并构建合适的新文件。如果你幸运的话,那甚至会起作用。CVS 确实如此,但是,正如我所说,Subclipse 可能是一个更大的问题。
最好的方法是使用 Eclipse subversion 透视图和“签出为 Eclipse 项目”选项将项目签入工作区。
如果您绝对需要从命令行构建项目目录,请使用 Subversion 出口 命令,而不是结帐命令。导出会忽略“.svn”目录,因此 Eclipse 可以不受干扰地完成其工作。但是,您必须执行团队/共享才能将导出的项目连接到 Subversion 存储库。