0

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

这些约束适用:

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

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

/exportFolder
/exportFolder/ device1 /exportFolder/
device1/unit1
/exportFolder/device1/unit1/一些文件,可能是其他子文件夹
/exportFolder/device1/
unit2 /exportFolder/device1/unit2/一些文件,可能是其他子文件夹
/exportFolder/device1/other东西,可能在子文件夹 / exportFolder / device1
/index 文件中包含到每个单元
(其他设备) 的相对链接unit2 /exportFolder/library1/unit2/一些文件,可能是其他子文件夹 /exportFolder/library1/其他东西,可能在子文件夹中






/exportFolder/library1/index 文件包含到每个单元
(其他库) 的相对链接
/exportFolder/其他东西,可能在子文件夹中
/exportFolder/library1/index 文件包含到每个设备和库的相对链接

(链接可能不会离开它们的子文件夹,即以“..”开头的绝对或相对链接)

为了实现重用,我想像这样设置每个存储库:
~/repositoriesFolder/projects/project1
~/repositoriesFolder/projects/project2
...
~/repositoriesFolder/
devices/device1 ~/repositoriesFolder/devices/device2
...
~/repositoriesFolder /libraries
/library1 ~/repositoriesFolder/libraries/library2
...
~/repositoriesFolder/units/unit1
~/repositoriesFolder/units/unit2
...

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

此 repositoriesFolder 布局也存在于服务器上(所有都是裸存储库),位于 /repositoryServer/user1/(包含要从用户 1 合并到 master 的更改)/repositoryServer/user2/(包含要从用户 2 合并到 master 的更改) /repositoryServer/main/(包含主分支)

我打算的工作流程如下所示:

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

现在的问题;-):

  • 这种工作流程方法可行吗?还有其他选择吗?
  • 我怎样才能做到这一点:假设用户有一个空的本地存储库文件夹。在此用户从服务器获取第一个项目“project1”(仅包含设备“device1”,仅包含一个单元“unit1”)后,我希望在用户的计算机上进行以下设置:
    • 在以前空的本地存储库文件夹中,现在有 3 个存储库:
    • /项目/项目1
    • /设备/设备1
    • /单位/单位1
    • project1 中的 device1 是一个子模块,指向对应的本地仓库
    • device中的unit1是一个子模块,指向对应的本地仓库
    • 对例如 project1/device1/unit1/someFile 的更改应该可以轻松推送到 2 个本地存储库和 /repositoryServer/user1/ 的存储库
    • 完整的变更流程:
    • 项目 1 中设备 1 中单元 1 的更改
    • “导出” => 更改 ~/repositoriesFolder/projects/project1
    • ~/repositoriesFolder/projects/project1 中的“提交” => ~/repositoriesFolder/devices/device1 中的更改
    • ~/repositoriesFolder/devices/device1 中的“某些命令(可能是自动)” => ~/repositoriesFolder/units/unit1 中的更改
    • “一些命令” => 将所有更改推送到 /repositoryServer/user1/
4

0 回答 0