昨天,我向a question询问了为什么目录可以出现在Subclipse中以包含未提交的更改,而实际上却没有。答案是在伪目录svn:ignore
上设置.
状态计为修改,但Subclipse没有显示任何内容,因为它不处理.
。
了解原因很好,但问题尚未完全解决。向.
伪目录提交添加忽略状态是否安全?我不希望SVN忽略实际目录;我只想让未提交的更改装饰器消失。 (不,我没有尝试过这样做。如果结果有问题,我不知道如何干净地恢复变化。)
编辑:
正如蒂姆的回答所指出的那样,指责修改.
会产生误导。 .
仅被标记为已修改,因为其中一个子目录设置为svn:ignore
;这是真正的变化和根源。
答案 0 :(得分:4)
根据您收到的output of svn diff
,您实际上为资源svn:ignore
设置了target
。此属性信息保存在父版本资源上(在本例中为项目根.
),以便可以独立于本地忽略设置将其提交到存储库。
鉴于此,提交属性更改是否安全?这取决于你想要产生什么样的影响。 documentation对svn:ignore
属性进行了说明:
svn:ignore属性是告诉Subversion忽略可能存在于该目录的每个用户的工作副本中的文件的好方法,例如编译器输出...
因此,通过提交此更改,您可以有效地忽略从存储库中提取项目的任何人的target
资源(前提是它当前未版权化)。这可能不是您工作场所的政策,所以您可能希望避免这种情况。要删除该属性,可以执行以下操作之一:
svn propdel svn:ignore .
svn:ignore
属性条目,单击鼠标右键,然后单击“删除属性”这应该摆脱根目录上的修改通知。关于您之前的问题,如果不是同步视图中property changes show as normal outgoing changes的事实,则问题会更明显。如果您打开提交对话框,您实际上应该看到不同的属性更改装饰器。
不幸的是,这使得target
资源无法使用。要在Eclipse中修复此问题,可以将target
添加到被忽略的资源列表中。要获得此选项,请转到窗口 - >偏好 - >团队 - >忽略资源。然后,您可以将“target”添加到忽略模式列表中。如果您希望将忽略模式全局应用于Subversion,则可以修改Subversion configuration file的global-ignores
设置。
这种方法的问题在于它忽略了Eclipse工作区中所有项目的target
资源,或整个系统中的所有Subversion操作(取决于您选择的ignore方法)。目前,我无法想出一种逐案逆转的方法。