处理分为子项目的大型Ruby项目的版本控制

处理分为子项目的大型Ruby项目的版本控制,ruby,project,versioning,packaging,Ruby,Project,Versioning,Packaging,TL;DR-大型项目有许多插件,这些插件导致自动测试经常失败。我想把这个项目分为核心回购和扩展回购,但怎么做呢 我有一个大型项目(),它有过多的插件,每个插件都有自己的依赖项。例如: 一个handlebar插件,它取决于therubyracer HTML验证程序插件,调用外部web服务 这些插件中有很多偶尔会失败: 未能构建(例如,therubyracer或nokogiri) 产生nanoc不期望的输出 调用关闭的web服务(例如HTML/CSS验证程序)、限制请求等 nanoc()使用

TL;DR-大型项目有许多插件,这些插件导致自动测试经常失败。我想把这个项目分为核心回购和扩展回购,但怎么做呢

我有一个大型项目(),它有过多的插件,每个插件都有自己的依赖项。例如:

  • 一个
    handlebar
    插件,它取决于
    therubyracer
  • HTML验证程序插件,调用外部web服务
这些插件中有很多偶尔会失败:

  • 未能构建(例如,
    therubyracer
    nokogiri
  • 产生nanoc不期望的输出
  • 调用关闭的web服务(例如HTML/CSS验证程序)、限制请求等
nanoc()使用的持续集成服务经常报告错误。这些错误中有95%是由插件引起的

这使得连续集成测试结果有些无用。我已经开始忽略“错误”构建状态,而只是假设某个插件出了问题。这显然不是一个好情况

我想将项目分为两部分:

  • 一个核心存储库+gem,包含项目的基本代码,没有插件,以及
  • 包含每个插件的插件库+gem
我大部分时间都会在core上工作,偶尔会更新插件库,使其与core中完成的工作相匹配(尽管通常core中的更改不会影响插件)

这似乎是一个合理的方法,但我有一些保留意见:

  • 我不知道如何处理版本控制。两种宝石是否都应该使用相同的版本?这可能与我现在使用的方法相冲突
  • 应该有一个插件库,还是每个插件都有自己的库?这可能会使版本控制更加困难
  • 我想快速发布新插件,这样人们就不必等到新功能发布后才能使用新插件。在这里,版本控制更加困难

想法和想法受到赞赏。

这取决于插件和主应用程序之间的关系

如果插件只能用于此应用程序,并且存在强耦合,则需要将插件放入插件路径并将其添加到主应用程序存储库中

如果插件可以用于更通用的用途,并且耦合更少,那么更好的方法是将这些插件配对,如下所示:

  • 将他们从主要回购中撤出

  • 为每个gem设置单独的回购

  • 如果不想公开,请在Gemfile中使用自定义gem路径*