在Git中管理多项目分支

时间:2013-07-16 17:56:38

标签: git maven structure git-flow

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

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

背景(原创):

如您所知,Git建议使用每个项目的存储库结构范例。与此同时,在我们的Maven案例中,任何严肃的项目都附属于几个内部图书馆。在任何sprint期间,项目和它所附加的库都会被修改。在Git世界中,这意味着修改将存在于几个Git存储库中。

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

Maven感知工具(可以反省POM以找出传递快照依赖列表的工具)会更好。

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

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

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

2 个答案:

答案 0 :(得分:1)

设置Jenkins服务器。

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

更新

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

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

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

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

答案 1 :(得分:0)

看看我发现了寻找Gitflow的其他内容: https://github.com/nvie/gitflow

它不能与Maven一起使用,因此它不符合我的需要,但它可能对你有帮助。