猿问

分布式版本控制系统和企业-一个很好的组合?

分布式版本控制系统和企业-一个很好的组合?

我明白为什么分布式源代码控制系统(类似于DVCS的Mercurial)对于开源项目是有意义的。

但对于企业来说,它们有意义吗?(通过集中的源控制系统(如TFS)

DVCS的哪些特性使其更适合于有许多开发人员的企业?(对中央系统)


慕桂英4014372
浏览 464回答 3
3回答

湖上湖

我刚刚在一家大型银行公司引入了DVCS(本例中的Git),其中Perforce、SVN或ClearCase是集中式VCS的选择:我已经知道了挑战(见我以前的回答)。我们能否最终转向公司软件中的DVCS?SVN是否仍然是发展的“必然”?")我在三方面受到挑战:集中化虽然分散模式有其优点(并且允许私有提交或在没有网络的情况下工作,同时可以访问满的(历史),仍然需要一套清晰的集中Repos,作为所有开发人员的主要参考。认证:DVCS允许您“签署”(提交)您的代码作为.几乎任何人(作者)foo“,电子邮件”foo@bar.com").你可以git config user.name foo,或git config user.name whateverNameIFeelToHave把你所有的承诺都用假名写在里面。这与大型企业使用的独特的集中式“Active Directory”用户参考信息并不能很好地结合在一起。授权默认情况下,您可以克隆、推送或拉到任何存储库和修改任何分支或任何目录。对于敏感项目,这可能是一个阻塞问题(银行界通常非常保护某些定价或量化算法,因为这些算法要求非常有限的人具有严格的读/写访问权限)。(Git设置)的答案是:集中化*已为任何存储库设置了唯一的服务器,这些存储库必须由全用户。备份一直在处理(每天递增,每周满)。Drp(灾难恢复计划)已经实现,在另一个站点上有第二台服务器,并通过以下方式进行实时数据复制。SRDF.此设置本身独立于所需的引用或工具类型(DVCS、Nexus repo、主Hudson调度程序或.):任何可能对发布到生产中至关重要的工具都需要安装在服务器上。.认证*只有两种协议允许用户访问主要请求:对组织外部的用户有用(如离岸开发),和有用的属属Active Directory管理器不想创建的帐户(因为它将是一个“匿名”帐户):一个真实的人必须负责该通用帐户,而该帐户将是拥有私钥的基于SSH,具有公钥/私钥:基于https的,Apache通过LDAP设置对用户进行身份验证:这样,必须为那些repos上的任何git操作提供实际登录。Git提供它的智能http协议,不仅允许pull(阅读)通过http,但也push(写)通过http。身份验证部分还在Git级别通过post-receive钩子,确保至少一个在提交过程中,您要推送到回购中,其“提交者名称”等于通过shh或http协议检测到的用户名。换句话说,您需要设置git config user.name正确的,否则任何您想要进行的中央回购将被拒绝。.授权:前面的两个设置(ssh或https)都连接起来调用相同的Perl脚本集,名为海泡石,作为参数:这两种协议检测到的实际用户名。用户希望执行的git命令(克隆、推或拉)。这个gitellperl脚本将解析一个简单的文本文件。其中设置了授权(对所有存储库或给定存储库中的分支,甚至对存储库中的目录的读/写访问)。如果git命令所需的访问级别与该文件中定义的ACL不匹配,则该命令将被拒绝。上面描述了我需要为Git设置实现什么,但更重要的是,它列出了DVCS设置需要解决的主要问题,以便在拥有独特用户基础的大公司中有意义。然后,也就是那时,一个DVCS(Git,Mercurial,.)可以添加值,因为:多站点间的数据交换虽然这些用户都是通过同一个Active Directory进行身份验证的,但他们可以分布在世界各地(我为之工作的公司通常在两个或三个国家的团队之间进行开发)。DVCS自然是为了在这些分布式团队之间高效地交换数据而制作的。跨环境复制:负责身份验证/授权的设置允许在其他专用服务器上克隆这些存储库(用于集成测试、UAT测试、生产前和部署前目的)。过程自动化:您可以轻松地克隆回购,也可以在本地的一个用户的工作站上使用,用于单元测试,使用“有保护的提交”技术和其他聪明的用途:您所见过的最聪明的源代码存储库是什么?".简而言之,您可以推动第二个本地回购负责:各种任务(代码的单元测试或静态分析)如果这些任务成功,则向后推回主回购。当您仍在第一次回购中工作,而不必等待这些任务的结果。.杀手特征:任何DVCS都有这些,主要的是合并(曾经尝试过用SVN做一个复杂的合并工作流吗?)或血色将6000个文件与ClearCase合并?)。单独(合并)意味着你真的可以利用亚细亚,在任何时候都可以将代码合并回另一个“主要”开发行,因为您会这样做:首先,在你自己的回购程序中,不要打扰任何人。然后在远程服务器上,将合并的结果推到中央回购系统上。
随时随地看视频慕课网APP
我要回答