将SVN设置为忽略是否安全。在应该受版本控制的目录中?

时间:2011-02-23 20:34:30

标签: svn subclipse

昨天,我向a question询问了为什么目录可以出现在Subclipse中以包含未提交的更改,而实际上却没有。答案是在伪目录svn:ignore上设置.状态计为修改,但Subclipse没有显示任何内容,因为它不处理.

了解原因很好,但问题尚未完全解决。向.伪目录提交添加忽略状态是否安全?我希望SVN忽略实际目录;我只想让未提交的更改装饰器消失。 (不,我没有尝试过这样做。如果结果有问题,我不知道如何干净地恢复变化。)

编辑:
正如蒂姆的回答所指出的那样,指责修改.会产生误导。 .仅被标记为已修改,因为其中一个子目录设置为svn:ignore;这是真正的变化和根源。

1 个答案:

答案 0 :(得分:4)

根据您收到的output of svn diff,您实际上为资源svn:ignore设置了target。此属性信息保存在父版本资源上(在本例中为项目根.),以便可以独立于本地忽略设置将其提交到存储库。

鉴于此,提交属性更改是否安全?这取决于你想要产生什么样的影响。 documentationsvn:ignore属性进行了说明:

  

svn:ignore属性是告诉Subversion忽略可能存在于该目录的每个用户的工作副本中的文件的好方法,例如编译器输出...

因此,通过提交此更改,您可以有效地忽略从存储库中提取项目的任何人的target资源(前提是它当前未版权化)。这可能不是您工作场所的政策,所以您可能希望避免这种情况。要删除该属性,可以执行以下操作之一:

  • 从命令行运行svn propdel svn:ignore .
  • 在Eclipse中(使用Subclipse),右键单击项目文件夹,转到Team - >单击“显示属性”,选择svn:ignore属性条目,单击鼠标右键,然后单击“删除属性”

这应该摆脱根目录上的修改通知。关于您之前的问题,如果不是同步视图中property changes show as normal outgoing changes的事实,则问题会更明显。如果您打开提交对话框,您实际上应该看到不同的属性更改装饰器。

不幸的是,这使得target资源无法使用。要在Eclipse中修复此问题,可以将target添加到被忽略的资源列表中。要获得此选项,请转到窗口 - >偏好 - >团队 - >忽略资源。然后,您可以将“target”添加到忽略模式列表中。如果您希望将忽略模式全局应用于Subversion,则可以修改Subversion configuration fileglobal-ignores设置。

这种方法的问题在于它忽略了Eclipse工作区中所有项目的target资源,或整个系统中的所有Subversion操作(取决于您选择的ignore方法)。目前,我无法想出一种逐案逆转的方法。