Git 中单个项目的多个流?

Multiple streams over single project in Git?

我浏览了有关 Git best practices model 的博客。 由于我们打算让 Git 作为我们组织中即将进行的项目的 SCM 主要负责人,我有一些疑问,因为他们无法在互联网上找到太多。

我们的项目架构是:我们只有一个主项目,在这个项目中我们有 8-10 个子项目,比如 SP1、SP2 ... SP8。所有这些项目都归其各自的组成员所有,与任何其他子项目无关。
我们还希望我们的主项目有一个 Master 分支、一个 Testing 分支和一个 Release 分支。

首先: 如果我们遵循这种情况,那么在克隆时每个人都应该通过 Git 获得所有 MainProject,但组成员不想要任何其他子项目。我们如何通过 Git 实现这一目标? Git中有没有类似流的概念?

其次:我们如何为子项目设置用户认证权限,使得其他子项目成员无法拉取、推送或克隆到其他子项目。

这些事情在 Git 中可能吗?

"stream-like concept"?我在 ClearCase 或 RTC(Rational Team Concert)中看到了这些。

不,没有流,您可以在其中定义要使用的 "components" 列表。

但是有分支:在每个分支中,您可以添加或删除您需要查看或忽略的子模块。参见“How do I remove a Git submodule?

因此您可以实现与流中类似的配置,分支仅包含您需要的子模块。

关于ACL(Access Control List),最完整的解决方案是gitolite, a perl script called by your Git server (apache or ssh, which are doing the authentication), and which will do the authorisation

我的建议是将每个 "subproject" 保存在自己的 Git 存储库中。它们彼此无关,有单独的身份验证要求等。此外,将单独的代码库保存在单个存储库中会导致大量虚假的合并提交,其中合并的一侧是对项目 A 的更改,而另一侧是对项目 A 的更改。另一方面是对项目 B 的更改,产生了很多噪音。