我浏览了关于Git best practices model的博客。 由于我们将Git作为我们组织即将开展的项目的SCM的主要负责人,我有一些疑问,因为他们无法通过互联网找到更多。
我们的项目架构是:我们只有一个主项目,在这个项目中我们有8-10个子项目说SP1,SP2 ...... SP8。所有这些项目都由其各自的小组成员拥有,并且与任何其他子项目无关 我们还想为我们的主项目设立一个主分支一个测试分支和一个分支分支。
首先:如果我们遵循这个场景,那么在克隆每个人时应该通过Git获取所有MainProject,但是组成员不需要任何其他子项目。我们如何通过Git实现这一目标?在Git中有没有类似概念的流?
第二:我们如何为子项目设置用户身份验证权限,以便其他任何SubProject成员都无法提取,推送或克隆到其他子项目。
这些事情在Git中是否可行?
答案 0 :(得分:2)
我的建议是将每个“子项目”保存在自己的Git存储库中。它们彼此无关,具有单独的身份验证要求等。此外,在单个存储库中保留单独的代码库可能会导致大量虚假的合并提交,其中合并的一方是对项目A和项目A的更改另一边是项目B的变化,造成很多噪音。
答案 1 :(得分:1)
“流式概念”?我在ClearCase或RTC(Rational Team Concert)中看过那些。
没有流,您可以在其中定义要使用的“组件”列表。
但是有分支:在每个分支中,您可以添加或删除需要查看或忽略的子模块。请参阅“How do I remove a Git submodule?”
所以你可以在流中实现类似的配置,分支只包含你需要的子模块。
关于ACL(访问控制列表),最完整的解决方案是 gitolite ,一个由Git服务器调用的perl脚本(apache或ssh,正在进行身份验证),和which will do the authorisation。