【问题标题】:Managing Multi-Project Branches in Git在 Git 中管理多项目分支
【发布时间】:2013-07-15 01:23:36
【问题描述】:

是否有工具可以在 Maven 项目/SCM 场景中实现以下抽象操作?

  • 给定一个应用程序项目,为应用程序及其使用的所有快照库创建分支,并传递;这些分支应该作为一个逻辑分支进行管理(见下)
  • 给定应用项目的逻辑分支,发布它(通过运行 Maven 发布);这意味着发布多个分支,每个库一个

背景(原文):

如您所知,Git 建议使用每个项目的存储库结构范式。同时,任何严肃的项目,在我们的例子中是基于 Maven 的,都附加到几个内部库。在任何 sprint 中,项目和它所附加的库都会被修改。在 Git 世界中,这意味着修改将存在于多个 Git 存储库中。

如果我们想在 sprint 中对工作进行分支,可能是因为我们使用 Gitflow,它会邀请我们在 sprint 结束时创建一个发布分支,我们将如何在所有涉及的库中以合乎逻辑的方式进行在 sprint 中,而不是手动分支每个库?

一个支持 Maven 的工具(一个可以自省 POM 以找出传递快照依赖列表的工具)会更好。

我能否在代表我的一个逻辑分支的多个物理分支(每个项目一个)之间创建逻辑关系?

Git 或某些 Git 工具是否支持逻辑分支?

我希望你不要说子模块。我在这里寻找的是抽象出 VCS 的细节,而不是成为 Git 大师。此外,我希望尽可能在一个操作中执行操作,因为必须单独分支每个库很容易出错并且很容易被遗忘。

【问题讨论】:

    标签: git maven structure git-flow


    【解决方案1】:

    设置Jenkins 服务器。

    它可以将每个maven模块构建为一个单独的项目,然后自动重新构建任何其他具有快照依赖关系的项目。

    更新

    用于 Jenkins 的 GIT 插件具有管理开发功能分支自动合并到“主”或“集成”分支的功能。请参阅文档:

    https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin-AdvancedFeatures

    另一种选择是使用 Gerrit 之类的代码审查工具来控制功能开发。 同样是 Gerrit 控制集成到共享代码流中的更改,并且 Gerrit 可以与 Jenkins 集成以确保所有提交的更改集都通过代码测试。

    最后使用M2 Release plugin 剪切发布,它是标准发布插件的包装器。 (意味着您将始终在 Jenkins 中拥有两种类型的构建。由代码提交触发的自动构建和通过 UI 显式触发的发布构建)。

    【讨论】:

    • 马克,我需要的是通过单击按钮在 SCM 中创建分支以准备发布。理想情况下,将检查 POM 结构并识别快照版本上的库。这些特定的库将被分支(可能在它们各自的存储库中使用相同的分支名称)。创建分支时,将更新主干快照。分支机构将作为一个统一管理。也就是说,如果我选择按名称将分支合并到另一个分支中,则所有库都将被合并。 maven:branch 可以用作子程序。理想情况下,这将是一个原子操作。
    • 这些家伙似乎刚刚对每个项目的存储库范式说“不”:stackoverflow.com/questions/7084625/…
    • @MihaiDanila 我想答案取决于库是否将全部一起发布,在这种情况下,您将在同一个仓库中设置包含父模块和子模块的多模块构建(因为这真的是一个项目)。 Jenkins 中的 M2 发布插件利用标准 Maven 发布插件,并将处理修订号和所有其他好东西。
    • 您的意思是,如果库与应用程序同步发展,那么单存储库模式可能是可行的方法。今天的情况并非如此。这些库由不同团队拥有的应用程序使用。我认为为所有这些应用程序拥有一个存储库是没有意义的,特别是因为不同的团队拥有它们。我不知道这会把我们留在哪里。
    • @MihaiDanila 没错。如果每个库都有单独的发布生命周期,那么它们必须有自己的 repo(发布标记)。我建议在开发中,您依赖于协作项目的快照修订。这样做的好处是,只要构建了一个依赖项,Jenkins 就会自动重建您的项目(前提是它们共享 Jenkins)。有一段时间没有使用发布插件了,但我似乎记得它编辑了 POM 文件,删除了任何快照依赖项。这有效地将您的版本与依赖项的稳定版本相匹配
    【解决方案2】:

    看看我在寻找关于 Gitflow 的其他内容时发现了什么: https://github.com/nvie/gitflow

    它不适用于 Maven,所以它不符合我的需求,但也许它可以帮助你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-11
      • 1970-01-01
      • 2021-08-19
      • 2015-12-09
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多