固定布局项目的Git工作流程和子模块的相对遥控器

时间:2012-04-20 16:33:42

标签: git workflow git-submodules

我正在尝试为我们公司的开发团队设置一个git工作流程。

这些限制适用:

  • 我要签到的东西不是项目本身(二进制:-(),而是它们的出口。 基本上这意味着给出并修复了项目的布局(由其导出表示)。
  • 每个"项目"存在"设备","图书馆"和其他数据。
  • "装置"和"图书馆"包含"单位"也许还有一些额外的数据。
  • 这些导出是一组xml文件,包含每个设备,库和单元的内容。
  • 仅导出完整的项目,而不仅仅是设备,库或单位。
  • 每个设备,库和单元都将其内容放在一个文件夹中(包含子文件夹)。
  • 存储库应位于服务器和每台用户计算机上的网络文件夹中(即每个链接的类型为file://)。
  • 无需远程访问。
  • 用户数量非常少(<10)
  • 没有不受我们控制的存储库

项目的导出可能如下所示:

/ exportFolder
/ exportFolder / DEVICE1
/ exportFolder / DEVICE1 / 1单元
/ exportFolder / device1 / unit1 / some files,也许是其他子文件夹
/ exportFolder / DEVICE1 /页免费
/ exportFolder / device1 / unit2 / some files,也许是其他子文件夹
/ exportFolder / device1 /其他东西,也许在子文件夹中
/ exportFolder / device1 / index文件,包含每个单元的相对链接
(其他设备)
/ exportFolder / LIBRARY1
/ exportFolder / LIBRARY1 / 1单元
/ exportFolder / library1 / unit1 / some files,也许是其他子文件夹
/ exportFolder / LIBRARY1 /页免费
/ exportFolder / library1 / unit2 / some files,也许是其他子文件夹
/ exportFolder / library1 /其他东西,可能在子文件夹中
/ exportFolder / library1 / index文件,包含每个单元的相对链接
(其他图书馆)
/ exportFolder /其他东西,也许在子文件夹中
/ exportFolder / library1 / index文件,包含每个设备和库的相对链接

(链接可能不会保留其子文件夹,即以&#34开头的绝对或相对链接; ...&#34;)

要启用重用,我想像这样设置每个存储库:
〜/ repositoriesFolder /项目/ PROJECT1
〜/ repositoriesFolder /项目/项目2
...
〜/ repositoriesFolder /装置/ DEVICE1
〜/ repositoriesFolder /设备/装置2
...
〜/ repositoriesFolder /库/ LIBRARY1
〜/ repositoriesFolder /库/ library2
...
〜/ repositoriesFolder /单位/ 1单元
〜/ repositoriesFolder /单位/页免费
...

项目中的设备和库应位于自己的存储库中,因此我打算在每个项目中创建子模块。 每个库和设备中的单元可以驻留在其包含的设备或库中,也可以作为子模块引用并存储在它们自己的存储库中。 这存储在我可以与每个单元一起提供的元数据中。

这个repositoriesFolder布局也出现在服务器上(所有都是裸存储库) / repositoryServer / USER1 /   (包含要从用户1合并到主服务器的更改) / repositoryServer / USER2 /   (包含要从用户2合并到主服务器的更改) / repositoryServer /主/   (包含主分支)

我想要的工作流程如下:

  1. 集成管理器创建一个项目并将其推送到/ repositoryServer / main / *
  2. 所有用户都从/ repositoryServer / main /*.
  3. 克隆/更新他们的项目,设备,库和单元
  4. 他们的子模块应该指向他们的本地存储库。 这样,如果用户在单元中发现错误,它可以修复它并在包含该单元的其他项目中使用它,即使他没有连接到服务器。
  5. 他们将更改从〜/ repositoriesFolder / *推送到/ repositoryServer / user1 /*.
  6. 集成管理器从/ repositoryServer / user * / 中提取更改,在本地合并/解析它们并将它们推送到/ repositoryServer / main /
  7. 转到2
  8. 现在提出问题; - ):

    • 此工作流程方法是否可行?还有其他选择吗?
    • 我怎样才能做到这一点: 让我们假设用户有一个空的本地存储库文件夹。 在此用户获取第一个项目&#34; project1&#34;从服务器(仅包含设备&#34; device1&#34;,只包含一个单元&#34; unit1&#34;),我想在用户上进行以下设置电脑:
      • 在以前空的本地存储库文件夹中,现在有3个存储库:
      • /项目/ PROJECT1
      • /装置/ DEVICE1
      • /单位/ 1单元
      • project1中的device1是一个子模块,指向相应的本地存储库
      • 设备中的unit1是一个子模块,指向相应的本地存储库
      • 更改为例如project1 / device1 / unit1 / someFile应该可以轻松地推送到2个本地存储库和/ repositoryServer / user1 / 的存储库。
      • 完整的变化流程:
      • 更改项目1中设备1中的单元1
      • &#34;出口&#34; =&GT;更改〜/ repositoriesFolder / projects / project1
      • &#34;提交&#34;在〜/ repositoriesFolder / projects / project1 =&gt;更改〜/ repositoriesFolder / devices / device1
      • &#34;某些命令(可能是自动的)&#34;在〜/ repositoriesFolder / devices / device1 =&gt;更改〜/ repositoriesFolder / units / unit1
      • &#34;某些命令&#34; =&GT;将所有更改推送到/ repositoryServer / user1 /

0 个答案:

没有答案