在封闭的企业环境中使用Git定位平台版本

时间:2014-07-10 14:58:40

标签: git eclipse-rcp tycho p2 target-platform

上下文

我们开发了许多插件,这些插件组装到Eclipse RCP 3.X应用程序中。我们使用单个目标平台,该平台基于P2存储库,因为这是Tycho支持的唯一风格。

目标平台VS SCM

我们的互联网访问受到很大限制。我们无法访问公开的P2 存储库,即使我们配置代理。 因此,我们下载P2存储库zip并将它们放入源代码控制中,以便团队可以共享它们并进行版本控制。 但是,我们认为在SCM下使用二进制内容通常是一种不好的做法。

我们正准备从ClearCase迁移到Git。在这样做的同时,我们正在考虑改变我们管理目标平台的方式。 我们考虑过不同的情景,但我们缺乏衡量其利弊的经验。 以下是我们反思的第一个结果:

场景1:为目标平台使用单独的Git存储库

  • 优点:
    • 插件共享
    • 我们以后可以回到目标平台的“物理”以前版本
    • 更改目标平台就像操作文件一样简单
  • 缺点:
    • SCM中的二进制文件
    • 每个存储库实例都使用大量磁盘来保留目标平台的整个历史记录

场景2:将Nexus与插件一起用于P2存储库管理

  • 优点:
    • 插件共享
    • 轻量级存储库:只需要对foo.target文件进行版本控制
  • 缺点:
    • 我们之前从未使用过Nexus
    • 更改目标平台内容更复杂
    • 我们需要手动保存每个版本的目标平台内容的存档副本

问题

如何在封闭的企业网络中使用Git处理目标平台版本控制? 您如何看待上述情况及其各自的优缺点? 你能建议其他解决方案吗?

1 个答案:

答案 0 :(得分:1)

使用Nexus和Nexus Unzip Plugin,有一个非常好的解决方案可以满足您拥有可重现的目标平台并独立于互联网访问构建的需求:

  • 设置Nexus,并确保您有可以部署到的m2存储库,例如与deploy-file
  • 下载所需的p2存储库作为zip存档(或者如果不提供下载,则自行创建这些存档存档文件夹。)
  • 使用非SNAPSHOT版本将压缩的p2存储库部署到Nexus m2存储库。 Nexus中的非SNAPSHOT工件是不可变的,因此当您通过Nexus上的URL引用p2存储库时,您将始终获得相同的内容。
  • 安装Nexus Unzip Plugin并将其配置为“影子”/提供您已部署到的存储库中的内容。通过这种方式,压缩的p2存储库获得一个“解压缩”URL,使它们看起来像Eclipse和/或Tycho的常规p2存储库。
  • 最后,创建一个目标定义文件,仅引用Nexus中的p2存储库,并将该文件放入您的git存储库。

我们已经在公司环境中使用此设置已经非常成功了一段时间,因此我建议您也尝试这种方法。

这类似于您的解决方案2,但使用不同的Nexus插件。对于所描述的解决方案,您不需要任何用于显式“p2存储库支持”的插件。此外,您无需对目标平台内容进行任何其他归档。


免责声明:Nexus Unzip插件由Tycho项目提供,我是其中的一名提交者。