【问题标题】:Storing persistent resource properties in Version Control在版本控制中存储持久资源属性
【发布时间】:2017-10-13 16:20:35
【问题描述】:

我有一个插件,通过eclipse的持久属性机制,将任意信息添加到项目的资源中。现在这些项目都存储在 SVN 和 GIT 等版本控制系统中。

不会签入持久性属性,因为它们存储在工作区的元数据中,而不是项目本身中。

%workspace%\.metadata\.plugins\org.eclipse.core.resources\.projects\%projectname%\.indexes

  • 有没有办法将这些属性保存到项目中并通过版本控制进行管理?
  • 如果没有,是否有人为此尝试过自定义解决方案?

这里有一个类似的问题:

Eclipse: Storing info in .project file

如果您想存储不涉及单个资源的项目范围信息,则该答案很有用。但我需要将信息连接到文件夹和文件,并将该信息存储在项目文件系统位置中。

【问题讨论】:

    标签: eclipse eclipse-plugin eclipse-rcp


    【解决方案1】:

    您可以在项目范围首选项值的“关键”部分中包含资源的路径。所以:

    preferences.putString("/path/to/file/keyword", value);
    

    【讨论】:

      【解决方案2】:

      我知道这是一个相当老的问题,但在搜索“Eclipse 项目范围的资源属性”时,它会作为最热门的匹配项之一弹出。 (搜索了这个,很明显是我自己在寻找解决方案。)

      Eclipse 为项目范围的首选项提供了 ProjectScope。这些首选项存储在/<project>/.settings 的文件中,因此可以轻松添加到版本控制中。如果你有例如在你的项目中设置一个文件的编码,你会在这个目录中找到org.eclipse.core.resources.prefs,你可以看到资源插件(它维护这个文件)如何使用特定的方案将属性名称和资源名称组合在一个首选项键。

      以此为基础,我实现了一个自定义解决方案,用于存储“版本控制中的持久资源属性”(又名“项目范围的资源属性”)。您可以查看解决方案here。生成密钥并将属性存储为首选项非常简单明了。此外,我的自定义解决方案会跟踪文件的删除并删除属性,以避免在您以后再次创建具有相同名称的文件时“弹出”它们。它还跟踪移动/重命名并保持与移动/重命名文件关联的属性。请注意,如果复制文件,它故意不会复制关联的属性,因为这不是我的用例的预期行为。

      它可以工作,但是对于像 Eclipse 平台这样复杂的环境,我可能没有考虑所有问题。有时间我会深入研究资源插件的源代码,看看如何正确操作。同时,它对我来说效果很好。

      【讨论】:

        猜你喜欢
        • 2015-01-19
        • 1970-01-01
        • 2012-04-13
        • 1970-01-01
        • 1970-01-01
        • 2018-11-21
        • 2014-11-29
        • 2017-07-25
        • 2014-05-19
        相关资源
        最近更新 更多