在构建类dir之后Eclipse中的红色感叹号

时间:2014-01-17 16:10:21

标签: eclipse svn

首先,我的构建路径没有问题,并且“问题”窗口中没有关于此错误的问题。会发生什么:

  • 我检查了SVN的项目
  • 然后我构建了该项目
  • SVN“版本”和链接从类和构建目录中删除(并显示红色!)
  • 我无法再将项目作为一个整体提交,因为我收到此错误:

    svn: Commit failed (details follow):
    svn: Working copy 'C:\Users\<me>\Documents\eclipseSDK\<project>\classes' is missing or not locked
    
  • 缺少 NOT ,它只是在构建期间“刷新”

我也尝试删除SVN端的目录,但仍然出现红色箭头并且提交错误 - 即使这些目录不再是已检查资源的一部分。

此外,基本上,任何“团队”菜单选项将不再适用于这两个目录,如果我尝试团队&gt;添加到版本控制,资源窗口中不会显示任何内容。

我甚至不知道我是否关心红色感叹,就像刚刚从SVN进程中获取这两个目标一样。就像我说的那样,我已经在SVN方面删除了,所以它们不再存在了。

1 个答案:

答案 0 :(得分:2)

您编译的类是否是Subversion存储库的一部分?如果是这样,从次级获得他们的权利!

对于尖叫感到抱歉,但是可以构建的文件(如类和jar文件)不应存储在版本控制中。它没有意义。

源代码管理允许您查看更改的历史记录。您可以看到谁在源代码中进行了哪些更改,但您无法在类文件或jar中执行此操作。源代码管理允许您分支和合并更改。你不能用类文件做到这一点。并且,它们很快变得陈旧。没有人关心上个月建立的类文件。

最大的问题是规模庞大。二进制文件没有很好的区分(许多版本控制系统甚至都没有尝试)。假设您每次构建时都构建了15 MB的类文件。这可能每次至少为您的存储库添加12兆字节。在一年内,您可以向存储库添加1千兆字节。您可以很容易地结束绝大多数(我的意思是在您的源代码库的90%范围内只是编译代码。编译代码,没有人关心。编译代码无法帮助您了解您的开发历史。编译的代码堵塞了您的存储库。

转到classes目录,然后从该目录的Team菜单中恢复。你将失去所有的变化,但那又怎样?他们不应该在那里。这将进行设置,因此您至少可以提交更改。

然后,从Subversion中删除该classes目录及其所有内容并提交。 Eclipse将在构建时创建目录,您可以在编译代码之前在Ant的构建文件中创建目录。然后,您应该在目录parent上设置svn:ignore属性,以防止人们检查classes目录。

如果您需要存储要供其他项目使用的jar文件,请使用版本库。实际上,使用像Artifactory或Nexus这样的Maven存储库。您不必使用Maven。 Ant可以使用Ivy从Maven存储库中获取文件,或者您可以根据需要使用URL通过wget或Ant中的<get/>任务来下载文件。


  

好的,我删除了[build&amp;来自本地的类],并从SVN中删除。对文件进行了一次小的编辑,只是为了能够运行提交 - 这很好。

那很好。

  

本地和SVN同步。建设和类是(并且是)ANT构建文件的一部分,因此再次运行构建。建设和类重新出现(有?这次),并添加到svn:ignore。

任何不在存储库中的文件都会显示问号。如果将svn:ignore属性添加到包含classessyncbuild的父目录,这些问号将会消失。

  

进行了另一个文件更改,但现在我无法提交整个项目,因为我现在收到更多/不同的错误(例如“过时”)。

过时意味着某人修改了存储库中的文件并将其提交。更改很可能是您删除的*.class个文件之一。您必须在提交之前进行更新。当您进行更新时,您可能会看到很多冲突,其中类文件已更改,但您已将其删除。 解决这些更改,更新并再次提交。

顺便说一句,我有pre-commit hook在这种情况下很有用。首先,它可以阻止人们将classes目录添加到存储库(及其下的任何文件)。其次,它可以确保svn:ignore设置正确。