在单个存储库中使用许多自主插件文件夹构建git和工作流

时间:2012-11-28 23:22:50

标签: git github workflow

我意识到这是一个非常模糊的问题,但是我的团队在解决我们的问题时遇到了很多困难。我们都不是git或工作流程专家,我们过去已经遇到过这方面的问题。

具体来说,我们有这种情况:

插件代码驻留在同一个私有存储库中的不同文件夹中(由于各种原因,我们不希望每个项目都有一个单独的存储库。)

因此存储库结构如下所示:

  • < REPO> /Plugin001/pom.xml
  • < REPO> / Plugin001 / SRC /主/ JAVA /...
  • < REPO> /Plugin002/pom.xml
  • < REPO> / Plugin002 / SRC /主/ JAVA /...
  • ...
  • < REPO> / Plugin050 / ...
    ...

通常需要特定于客户的补丁或增强功能,而且,我们经常需要为特定客户支持特定的插件版本。

也就是说,我们需要一个有组织的结构和工作流程,允许以下内容:

  • 能够顺利地处理单个插件而不会与人们对其他插件的提交产生冲突(例如,不需要在单独的插件中进行更改以将更改推送到当前插件。)理想情况下,这将更加严格PluginA的开发者无法破坏PluginB中的任何内容。
    • 最佳方法猜测: ???
  • 能够使用客户特定代码修补基本/核心插件代码;
    • 最佳方法猜测:为每位客户创建一个新分支并从那里开始工作。
  • 能够轻松获取最新的客户特定插件并对其进行修补(上游或其他方式);
    • 最佳方法猜测:检查客户分支并将其与主数据库中的发布标记合并。标签必须是非常可识别的,例如$ plugin_name。$ build_number
  • 通过将二进制文件发布到中心位置(例如Box)来自动发布版本的方法。
    • 最佳方法猜测:以某种方式使用post-commit hooks完成此任务。
  • 构建应自动增加其构建号。我猜这对于Maven大师来说是一个单独的问题,但只是把它丢在那里。
    • 最佳方法猜测: ???

我一直在研究子模块,gitslaves,标签,分支等,试图提出一个结构和开发过程的建议来解决所有这些问题。

请记住,这些开发人员对git或版本控制一般都没有经验,我们没有系统管理员来处理这类工作......所以越简单越好。

对上述任何一方有何意见?我想最重要的项目是第一颗子弹。

1 个答案:

答案 0 :(得分:1)

首先:如果插件是真正独立的项目(从某种意义上说它们是独立的版本,分支和发布),那么真的想要将它们放入单独的存储库中。例如,分支始终是每个回购。

如果您认为必须使用单个回购:

  

能够顺利地处理单个插件而不会发生冲突   来自人们提交到其他插件(例如,不需要提取更改   在一个单独的插件中将更改推送到当前插件。)理想情况下   这将更加严格,以至于PluginA的开发者不能   在PluginB中打破任何东西。

我不认为会有问题。是的,你需要在推送之前拉(这是使用一个回购产生的),但是提交到其他项目不会引起冲突,所以没有任何伤害。

  

能够使用客户特定代码修补基本/核心插件代码;   最好的方法猜测:为每个客户和工作创建一个新的分支   从那里。

是的,这里没有变化。只有分支机构对所有项目适用的轻微烦恼;但你可以为分支采用一些命名约定。

  

能够轻松获取最新的客户特定插件和补丁   他们(上游或其他);最佳方法猜测:检查   out a customer branch并将其与master中的release标签合并。   标签必须是非常可识别的,比如   $ PLUGIN_NAME。$ BUILD_NUMBER

  

通过将二进制文件发布到a来自动发布版本的方法   中心位置(例如Box。)最佳方法猜测:以某种方式完成   这与post-commit hooks。

“最佳”取决于很多因素,但您很可能需要一个CI服务器即构建守护进程。 提交后挂钩也应该可以工作,但是你需要一些基础设施来运行构建,存储日志等。如果你可以使用CI服务器,你真的不想自己这样做。

  

构建应自动增加其构建号。我猜这是   对于Maven大师来说,这是一个单独的问题,但只是把它丢在那里。

这确实是一个单独的问题。把它当成一个。