在我的工作场所,我们有一个大型Subversion存储库,可容纳大约100个项目。有些项目通过svn:externals互相使用。通常所有人都对所有内容都具有读写权限,但有时外部人员和实习生只能限制对某些自定义文件夹的读/写访问权限,因此他们无法获得我们的皇冠上的宝石。
你将如何在git中构建它?每个Project都有自己的存储库?你怎么能重用代码?你能以某种方式实现访问权限吗?
答案 0 :(得分:16)
结构:是的,每个存储库有1个项目。 Git的设计就是以这种方式工作,它做得非常好。
重用代码:使用git submodules(非常类似于svn:externals,只有更好)
访问权限:是的,访问控制通常围绕ssh和公钥构建。如果您想自己托管,请尝试gitosis,但我实际上强烈推荐托管解决方案,例如GitHub。
答案 1 :(得分:1)
我会使用一个git repo,如果您不需要限制读访问权。
结构:文件系统层次结构
通过构建系统重用代码
访问权限:写访问权限是补丁合并。它可以通过脚本控制,也可以由设计人员控制。如果你有3个项目,每个项目都有一个项目经理负责合并主分支中的代码。请记住,这就是linux的工作原理,git特别适合这种情况。
为什么要使用单个回购?
主要原因是代码分歧。假设你有3个项目和一些共享库。团队A需要调整libXY的界面并提交代码,有两种情况:
子模块:如果更改破坏了代码,则B队和C队必须更新其子模块并向A队报告。他们也可以自己更新代码,但是A队也可能会有一些代码破坏。
One-big-repo:团队A更改代码,直到所有测试通过。变化在上游合并,每个人都很高兴。
在场景一中运行所有测试也是可能的,但是,这就像你有一个回购一样,因为你必须签出所有代码。
这是我的观点。也许你在回购中有一些大资产,你不希望每个人都结账,因为它们需要2GB。也许你的代码库是如此之大,以至于overhea并不重要。
但我相信,除非你是谷歌,IBM,否则你支付的管理多个回购的开销将会太大,让你有时间花在更有成效的事情上。
干杯, zimbatm