源代码控制初学者

时间:2020-03-05 18:42:13  来源:igfitidea点击:

作为源代码控制的初学者,最好的版本控制系统是什么?

解决方案

回答

什么都可以,但是我自己会学习像git或者subversion这样的现代系统。我的第一个VCS是RCS,但我掌握了基础知识。

回答

好吧,如果我们只是想自己学习,我会说我们应该免费使用一些东西,例如颠覆。如果我们是从未使用过源代码控制的公司,那么这实际上取决于需求。

回答

我建议我们尝试使用Subversion,例如使用一键式SVN安装程序。尝试在SO中搜索" Subversion",我们会发现很多问题,这些问题的答案指向好的教程。

祝你好运!

回答

我的第一次接触是使用WinCVS作为客户端的CVS。那太可怕了。接下来是Subversion,它具有TortoiseSVN和Eclipse的集成。这是直观的,天上的。我认为将CVS与TortoiseCVS和Eclipse一起使用也会很好,尽管我更喜欢SVN处理修订的方式。整个存储库都随每次签入而不是单个文件进行版本控制。

回答

我认为一些重要的核心概念需要学习:

  • 入住/退房(显然)
  • 本地版本与服务器版本
  • 将本地工作空间映射/绑定到远程存储或者存储库。
  • 将更改合并回包含其他更改的文件。
  • 分支(它是什么,何时/为什么使用它)
  • 将更改从分支合并回主分支或者主干。

大多数现代的源代码控制系统都需要有关上述主题的一些知识,并应有助于我们学习它们。然后我们有了分布式源代码管理,我没有任何经验,但是应该相当复杂,可能不适合初学者。

Subversion很棒,因为它具有我们想要的所有现代功能,并且是免费的。

Git也正在成为越来越流行的选择,并且是Subversion的另一种免费或者非常便宜的替代方案。但是,有关分支和合并概念的知识对于使用Git至关重要。

我们可以使用unfuddle作为Git和Subversion的一种免费,简便的方法。我用它为过去从事过的一些副项目托管了两个Subversion存储库。

回答

除了Visual Source Safe之外,什么都没有;最好是支持分支和合并概念的一种。正如其他人所说,Subversion是一个不错的选择,尤其是对于TortoiseSVN客户端而言。

一定要检查一下(原谅),Eric Sink的经典系列Source Control HOWTO文章。

回答

我还建议Subversion。设置不需要花费太长时间,它是免费的,并且在线上有一本非常好的书,涵盖了基础知识和一些高级主题:http://svnbook.red-bean.com/

回答

用tortoisesvn颠覆。 (tortoisesvn,因为我们可以看到很多直观的内容,并为命令行提供了很好的起点。)这里有大量文档,我们很可能会在职业生涯中至少看到一点。我为之工作并接受采访的几乎每家公司都运营SVN。

回答

我发现http://unfuddle.com使我免于安装SVN或者git。我们可以在那里获得一个免费帐户,并使用其中任何一个,还可以在那里使用OpenID。

然后,我们不必为正确设置它而烦恼,而将精力集中在如何使用它上!

回答

@伊恩·尼尔森(Ian Nelson):

我同意观点,Source Safe作为源代码管理系统是不好的,但是请记住,使用Source Safe比"随身携带软盘"要好得多,如Joel Spolsky所说。

对于初学者来说,这可能不是一个坏主意,因为完全没有源代码控制的成本要高得多。

回答

SourceGear.com的Vault非常棒。它对单个用户免费,并提供了出色的VS 2005/2008界面。我喜欢它!

rp

回答

如果我们想在入门时学习商业产品,Perforce将提供免费的客户端和服务器,该服务器支持两个用户和五个客户端工作区。

在我以前的工作场所,它不仅被我们的程序员虔诚地用于代码,还被用于艺术资产和游戏级别以及我自己的文档。

回答

我不是高级源代码控制用户,但我正在学习。这是我对源代码控制产品的经验:

  • 很久以前,当时我工作的公司决定使用源代码控制。他们向开发人员介绍了该概念,并让eveyone愿意尝试一下。他们选择使用PVCS并将其实现。不久之后,开发人员将不得不协调以锁定/解锁模块和对象,而我们确实没有看到太多好处。
  • 几年后,我在玩一个开源项目,当时rubyforge提供了CVS存储库。我尝试了一下,它比PVCS稍好。当然,我是唯一使用存储库的人。但是,当我尝试重新排列文件的结构时,我确实感到沮丧,因为我不喜欢最初导入文件的方式。在CVS中并没有真正解决问题。
  • 几年后,我从事另一个个人项目,我的网络托管提供商提供了易于设置的Subversion(SVN)存储库。为了使它正常运行,我花费了一些时间进行研究,但是一旦我超出了最初的学习曲线,我就会喜欢它。
  • 不久之后,我意识到我喜欢拥有源代码控制,而我目前的工作没有。因此,我进行了宣讲,经过很长一段时间,我的团队实施了Source Safe,因为我们在Visual Studio中工作,通常是一家Microsoft商店。我渴望使用它,但是不久之后,我发现我丢失了文件,并且Visual Studio将东西放到错误的位置,并且我将在项目上工作一段时间,然后将我的作品导出到另一个位置并发现它或者不会导出,或者只会导出解决方案中的某些项目。这使我意识到,即使我以为我正在使用"版本控制系统",但最安全,可靠和完整的代码副本是我的工作副本。与源代码控制应该做的完全相反。
  • 因此,上周我对Source Safe感到厌倦,以至于不得不去搜索。在研究了一些解决方案之后,我决定尝试git。我不会说全部都是玫瑰花,因为我再次有了一些学习曲线,可以使它完成我想做的事情。但是,我非常喜欢它,可以将我的所有工作和个人项目都转换成它。关于它的真正好处之一是,我不需要集中式存储库,因此我无需使用繁琐的繁琐工作即可安装它就可以使用它。

简而言之,我会推荐git,我在Windows中使用Mysysgit,它具有给我bash shell带来的额外好处。在Linux上,我们可以从软件包管理器进行安装。如果我们不喜欢git,请尝试颠覆。如果我们不喜欢其中任何一种,那么我们可能也不会喜欢CVS或者PVCS。在任何情况下都不要尝试Source Safe,这很糟糕。

回答

我直接去找Git。我以前使用过Subversion,但总觉得我做错了。从第一天开始,Git就有意义了。

有用的资源:

  • Git上的Linus Torvals
  • 斯科特·查孔(Scott Chacon)

回答

每个工具都有其优点和缺点。这完全是要求的问题。不幸的是,与许多其他问题一样,此问题通常不是所选择的最佳工具,而是人们熟悉的工具。例如,如果我们不需要很多分支机构,并且团队规模小且本地化,那么几乎所有的vc都可以胜任(SourceSafe除外)。如果我们需要分支机构(这几乎必然意味着我们还需要进行合并),团队分布,需要高级安全性(不允许分包商使用整个源代码树),任务跟踪等,事情就会发生变化。成本以三种不同的方式进行计算:许可证成本,维护成本(某些工具非常复杂,以至于我们实际上需要专人来控制存储库)和培训成本。

因此,建议一种工具胜过建议另一种工具,就像建议什么是最好的编程语言一样。

只是一些指针:

  • StarTeam是我使用过的最简单的工具。它只需要很少的培训。自从我成为维护者以来,我接受了为期一天的培训。这种维护使我每周不到30分钟的时间。通过编写两页的手册,我对用户进行了"培训",此后我几乎没有问题要回答。
  • 就易用性而言,Continuus是天平的另一端。另一方面,任务处理很棒,它为发布管理提供了良好的支持。麻烦的是,即使作为发布经理,我也从未想到过发布发布的便捷性(曾经是我们学会了如何发布,但是花费了相当长的时间)应该比开发人员的日常工作更重要。
  • 工具之间的合并和分支创建之间存在巨大差异。某些工具使此操作变得简单,例如git和ClearCase(尽管后者非常慢),但某些工具基本上会迫使我们手动进行合并。如果我们需要进行大量合并,则成本可能会很高。在前面提到的所有三个类别中,ClearCase也很昂贵(尽管必须说我们使用了所有不必要的高级东西)。另一方面,Git缺乏良好的UI,并且某些概念与我们可能习惯的有所不同。 Git的安全功能也缺乏(gitosis解决了一些问题,但不是全部)。
  • 我使用的大多数工具也相当慢。不管是什么(诸如在存储库中打开目录之类的基本事情),诸如PVCS / Dimensions之类的工具都非常缓慢,而以更特定的方式(例如ClearCase)却非常缓慢。

如果开发人员不是非常有经验(如果我们不介意支付许可证,这是非常昂贵的话),那么从我使用的工具中选择StarTeam,如果我们有一些经验丰富的VC可以设置环境,则可以选择git。给其他人。 Mercurial看起来也像是一个有趣的竞争对手,并且似乎具有更好的UI。

Continuus,PVCS / Dimensions和ClearCase对于几乎任何项目而言都太慢,太复杂且太昂贵。如果有人坚持要选择其中之一,我会选择ClearCase。

我还没有使用许多人似乎喜欢的Subversion(但是,我感觉这将在不久的将来改变),所以无法评论它与我使用的其他工具(通常是构建和/或者发布经理)。

至于第一个选择的工具,Git,Bazaar和Mercurial的问题是它们是分布式vcs。这与传统的服务器-客户端模型不同,在传统的服务器-客户端模型中,我们拥有一个中央存储库。为了只学习东西,我建议我们还阅读有关概念的知识。例如,分支只是我们自己尝试可能无法正确理解的东西(针对不同情况存在不同的分支策略)。另外,如果我们是唯一访问存储库的人,则情况将大为不同,例如合并冲突就不会有问题(我们可能会看到它们,但由于我们知道两个分支中的代码,因此也很容易修复它们)。当然,我们会了解有关签出,签到等信息,但我认为这些问题一开始并不特别困难。

vcs的另一个问题是它们倾向于使用不同的术语。在易于使用的StarTeam中,出于某种原因,他们坚持使用"签出"和"签出并锁定"这两个术语。后者是大多数人认为的第一种。这是有原因的(即使我们没有排他锁也可以编辑文件),但是将它们命名为" Get"和" Check out"以避免混淆会更有意义。

回答

Subversion是一个很好的起点。它是非常稳定和现代的版本控制系统。
开始学习有关Subversion的最佳在线资源是带有Subversion的版本控制。就服务器和客户端软件而言,有很多选择。我个人更喜欢(对于Windows环境)。

  • VisualSVN服务器
  • TortoiseSVN与Shell集成的客户端和
  • AnkhSVN Visual Studio Subversion添加组件

同样,有了Subversion,有很多可用的选项。此外,它是一个不断发展的版本控制系统(与过时的SourceSafe不同)。它可以轻松地与众多自动化构建工具(CruiseControl,FinalBuilder)和错误/问题跟踪系统(JIRA)集成。

如果我们正在寻找最新的版本控制系统,请使用Git(由Linus Torvalds开发)。但是,如果我们是版本控制系统的新手,我建议我们先从Subversion开始。