我已经使用Subversion几年了,在使用SourceSafe之后,我只是喜欢Subversion.结合TortoiseSVN,我无法想象它会如何变得更好.
然而,越来越多的开发人员声称Subversion存在问题,我们应该转向新一代的分布式版本控制系统,例如Git.
Git如何改进Subversion?
我将git用于个人项目,并认为它很棒.它快速,灵活,功能强大,适用于远程开发.
但现在它的工作是强制性的,坦率地说,我们遇到了问题.
开箱即用,git似乎不适用于大型(20多个开发人员)组织的集中开发,开发人员具有不同的能力和git复杂程度 - 特别是与Perforce或Subversion等其他源控制系统相比,针对那种环境.(是的,我知道,Linus从未打算这样做.)
但是 - 出于政治原因 - 我们仍然坚持使用git,即使它很糟糕我们正试图用它做什么.
以下是我们看到的一些事情:
但是,我听说人们在大型开发组织中成功使用git.
如果您处于这种情况 - 或者如果您通常拥有工具,提示和技巧,以便在一个大型组织中使用git变得更容易和更有效率,而某些人不是命令行粉丝 - 我很想听听您有什么建议.
顺便说一句,我已经在LinkedIn上问了这个问题的一个版本,并没有得到真正的答案,但很多"天哪,我也很想知道这一点!"
更新:让我澄清一下......
在我工作的地方,除了git之外我们不能使用任何东西.这不是一个选择.我们坚持下去.我们不能使用mercurial,svn,bitkeeper,Visual Source Safe,ClearCase,PVCS,SCCS,RCS,bazaar,Darcs,monotone,Perforce,Fossil,AccuRev,CVS,甚至是我在1987年使用的Apple的好投影仪.因此,虽然欢迎您讨论其他选项,但如果您不讨论git,您将无法获得赏金.
另外,我正在寻找有关如何在企业中使用git的实用技巧.我在这个问题的顶部列出了我们所遇到的问题清单.同样,欢迎人们讨论理论,但如果你想获得赏金,请给我解决方案.
我已经将Mercurial用于我自己的个人项目一段时间了,我喜欢它.我的雇主正在考虑从CVS转换到SVN,但我想知道是否应该推动Mercurial(或其他一些DVCS).
Mercurial的一个问题是它似乎是围绕每个"项目"拥有一个存储库的想法而设计的.在此组织中,当前CVS存储库中有许多不同的可执行文件,DLL和其他组件,这些组件按层次结构组织.有许多通用的可重用组件,但也有一些客户特定的组件和客户特定的配置.当前的构建过程通常从CVS存储库中获取一些子树.
如果我们从CVS迁移到Mercurial,那么组织存储库/存储库的最佳方法是什么?我们应该有一个包含所有内容的巨大Mercurial存储库吗?如果不是,那么较小的存储库应该有多细粒度?我认为如果他们必须从许多不同的地方提取和推送更新,人们会觉得非常讨厌,但如果他们必须拉/推整个公司的代码库,他们也会觉得很烦人.
有人有这方面的经验或建议吗?
相关问题:
我想在使用vcs或dvcs时学习其他人的工作流程.
请描述您处理以下任务的策略:
您可以随意组织您的答案,不按任务分组,但按照您认为相关的任何分组,但请通过VCS/DVCS进行组织(请不要混用它们).
谢谢.
我可以看到为什么分布式源代码控制系统(像Mercurial这样的DVCS)对开源项目有意义.
但它们对企业有意义吗?(通过集中的源控制系统,如TFS)
DVCS的哪些特性使其更适合或更适合具有许多开发人员的企业?(通过集中式系统)
我现在正在使用SVN,过去我曾使用过CVS和VSS.SVN是我书中最喜欢的,但我听说过很多关于git的内容.使用git的人中,你的经历有哪些优点和缺点?
我刚刚加入了一家新公司,目前我们正在使用Microsoft SourceSafe作为我们的存储库.这些设置并不理想,但事实证明这是一个很大的痛苦.
我最近使用Mercurial并认为它很棒,所以我主张转换到那个,但看起来该公司已经拥有Team Foundation Server许可证并希望使用它.
任何人都可以给我一个积分列表,其中一个比另一个好吗?我没有使用TFS,所以我不知道它的优点/缺点.
我的一位同事对PerForce的可能性感到兴奋(我们基本上需要在后勤上对补丁和更改进行分组,并且本机上的SCM支持非常好).我们目前使用CVS,并对所有可能性开放.我们只有少数使用纯Eclipse并使用ant脚本运行构建的开发人员.
在跳入水中之前,我想听听其他技术原因可以说"好主意"或"坏主意"的人.我也想知道这在你的日常工作中是多么的干扰.
编辑2011:仅供记录.我们迁移到git - 决定性的因素是我们使用Eclipse和eclipse.org用于git,因此我们最终可以期待非常好的IDE集成.我们有点早了 - 直到今年夏天的Eclipse 3.7.今天git在Eclipse中非常好用.
编辑2015:事实证明,git最终成为无可争议的赢家,这得益于github和一般的IDE支持,结合Maven最终使Java项目与IDE无关.
是否存在任何性能基准?
我正在寻找创建一个repo并提交/推送遗留代码,这些代码可以运行几个演出.
是更快/足迹等?
如果这太模糊,我道歉
我感兴趣的是使用传统SCM产品(ClearCase,AccuRev,Perforce等)和Git对分布式团队的大型项目的价值(或缺乏).
在提高团队活动可见性方面是否有显着的增值?控制分支和合并?访问控制和安全性?发布工程?其他因素?
或者Git本身更好吗?或者是否有一个开源SCM,它将等同于上面提到的商业产品?
谢谢.
最近在一些同事之间进行了讨论,在当今的软件行业中,存在两个独立的世界:
Git在企业环境中使用了多少?
您在企业环境中使用Git的经历是什么?
我听说过,例如将分支与git或mercurial合并比使用svn更容易.
在软件博客上阅读Joel的最后一篇,我并没有明白为什么.你能提供一个具体的例子,与svn相比,与git/mercurial合并导致更少的合并冲突吗?
我工作的公司专门使用Clearcase.我觉得学习和使用它是不值得的,因为我的项目不会涉及太多人(最多3人),也不会涉及花哨的开发流程.当我们根据我的建议提出"IT支持和统一源代码控制"这一点时,我如何说服我的经理使用单独的源代码控制?或者这一点是否有效,我应该选择Clearcase?
谢谢...
PS:我在考虑使用Subversion.
git ×10
mercurial ×7
dvcs ×4
svn ×3
perforce ×2
tfs ×2
accurev ×1
benchmarking ×1
clearcase ×1
eclipse ×1
enterprise ×1
java ×1
merge ×1
performance ×1