在公司中使用Git?

时间:2008-12-31 11:28:02

标签: svn git version-control

在我的工作场所,我们有一个大型Subversion存储库,可容纳大约100个项目。有些项目通过svn:externals互相使用。通常所有人都对所有内容都具有读写权限,但有时外部人员和实习生只能限制对某些自定义文件夹的读/写访问权限,因此他们无法获得我们的皇冠上的宝石。

你将如何在git中构建它?每个Project都有自己的存储库?你怎么能重用代码?你能以某种方式实现访问权限吗?

2 个答案:

答案 0 :(得分:16)

结构:是的,每个存储库有1个项目。 Git的设计就是以这种方式工作,它做得非常好。

重用代码:使用git submodules(非常类似于svn:externals,只有更好)

访问权限:是的,访问控制通常围绕ssh和公钥构建。如果您想自己托管,请尝试gitosis,但我实际上强烈推荐托管解决方案,例如GitHub

答案 1 :(得分:1)

我会使用一个git repo,如果您不需要限制读访问权。

结构:文件系统层次结构

通过构建系统重用代码

访问权限:写访问权限是补丁合并。它可以通过脚本控制,也可以由设计人员控制。如果你有3个项目,每个项目都有一个项目经理负责合并主分支中的代码。请记住,这就是linux的工作原理,git特别适合这种情况。

为什么要使用单个回购?

主要原因是代码分歧。假设你有3个项目和一些共享库。团队A需要调整libXY的界面并提交代码,有两种情况:

  1. 子模块:如果更改破坏了代码,则B队和C队必须更新其子模块并向A队报告。他们也可以自己更新代码,但是A队也可能会有一些代码破坏。

  2. One-big-repo:团队A更改代码,直到所有测试通过。变化在上游合并,每个人都很高兴。

  3. 在场景一中运行所有测试也是可能的,但是,这就像你有一个回购一样,因为你必须签出所有代码。

    这是我的观点。也许你在回购中有一些大资产,你不希望每个人都结账,因为它们需要2GB。也许你的代码库是如此之大,以至于overhea并不重要。

    但我相信,除非你是谷歌,IBM,否则你支付的管理多个回购的开销将会太大,让你有时间花在更有成效的事情上。

    干杯,    zimbatm