Raj*_*Rao 49 git version-control tfs mercurial dvcs
我可以看到为什么分布式源代码控制系统(像Mercurial这样的DVCS)对开源项目有意义.
但它们对企业有意义吗?(通过集中的源控制系统,如TFS)
DVCS的哪些特性使其更适合或更适合具有许多开发人员的企业?(通过集中式系统)
Von*_*onC 93
我刚刚在一家大型银行公司推出了DVCS(本案例中为Git),其中Perforce,SVN或ClearCase是选择的集中式VCS:
我已经知道了这些挑战(参见我之前的回答" 我们能否最终转向DVCS企业软件?SVN仍然是开发的"必备"吗? ")
我在三个方面受到挑战:
集中化:虽然分散模型有其优点(并允许私有提交或在没有网络的情况下工作,同时可以访问完整的历史记录),但仍需要一套清晰的集中式存储库,作为所有开发人员的主要参考.
身份验证:DVCS允许您"签名"(提交)您的代码...几乎任何人(作者",foo"电子邮件" foo@bar.com").
你可以做一个git config user.name foo,或者git config user.name whateverNameIFeelToHave,并在其中提交所有伪造名称的提交.
这与大企业使用的独特的集中式"Active Directory"用户参考不兼容.
授权:默认情况下,您可以克隆,推送或拉到任何存储库,并修改任何分支或任何目录.
对于敏感项目,这可能是一个阻塞问题(银行业通常非常保护某些定价或定量算法,这些算法需要对非常有限的人进行严格的读/写访问)
答案(对于Git设置)是:
.
pull(读取)通过http,还允许push(写入)通过http.认证部分也在Git级别通过post-receive钩子加强,这确保您推送到仓库的至少一个提交具有"提交者名称"等于通过shh或http协议检测到的用户名.
换句话说,您需要git config user.name正确设置,或者您要对中央仓库进行的任何推送都将被拒绝.
.
该gitolite perl脚本将解析一个简单的文本文件,其中授权(读为所有存储库中的给定的存储库中,即使是存储库中的目录/写访问,或分支机构,或)已设置.
如果git命令所需的访问级别与该文件中定义的ACL不匹配,则拒绝该命令.
上面描述了我需要为Git设置实现的内容,但更重要的是,它列出了在具有独特用户群的大公司中使DVCS设置需要解决的主要问题.
然后,只有这样,DVCS(Git,Mercurial,...)才能添加值,因为:
多个站点之间的数据交换:虽然这些用户都通过同一个Active Directory进行了身份验证,但它们可以位于世界各地(我所工作的公司通常在两个或三个国家/地区的团队之间进行开发).DVCS自然地用于在这些分布式团队之间有效地交换数据.
跨环境复制:负责身份验证/授权的设置允许在其他专用服务器上克隆这些存储库(用于集成测试,UAT测试,预生产和预部署)
流程自动化:您可以轻松地克隆仓库,也可以在一个用户的工作站上本地使用,使用"保护提交"技术和其他聪明的用途进行单元测试:请参阅" 源仓库最聪明的用途是什么 " 你见过吗? "
简而言之,您可以推送到第二个本地仓库,负责:
.