作为源代码控制初学者学习的最佳版本控制系统是什么?
答案 0 :(得分:24)
除了Visual Source Safe之外的任何东西;优选地,支持分支和合并的概念。正如其他人所说,Subversion是一个很好的选择,特别是对于TortoiseSVN客户端。
请务必查看(原谅双关语)Eric Sink's classic series of Source Control HOWTO articles。
答案 1 :(得分:8)
我建议您尝试Subversion,例如使用1-click SVN installer。尝试在SO上搜索“Subversion”,你会发现大量问题和答案,指向好的教程。
祝你好运!答案 2 :(得分:8)
答案 3 :(得分:5)
我认为有一些重要的核心概念需要学习:
大多数现代源代码控制系统需要对上述主题有一些了解,并且应该有助于您学习它们。然后你有分布式源代码控制,我没有任何经验,但应该相当复杂,可能不适合初学者。
Subversion非常棒,因为它具有您想要的所有现代功能,并且是免费的。
Git也正在成为越来越受欢迎的选择,并且是Subversion的另一种免费或非常低成本的替代方案。然而,关于分支和合并概念的知识对于使用Git至关重要。
您可以使用unfuddle作为一种免费且简单的方法来试验Git和Subversion。我用它来为我过去曾经做过的一些副项目托管几个subversion存储库。
答案 4 :(得分:3)
我不是高级源代码控制用户,但我正在学习。以下是我对源代码管理产品的经验:
很久以前,我当时工作的公司决定使用源代码管理。他们向开发人员介绍了这个概念,并让eveyone愿意尝试一下。他们选择使用PVCS并实施它。不久之后,开发人员必须协调锁定/解锁模块和对象,我们真的没有看到太多的好处。
几年后,我正在玩一个开源项目,当时rubyforge正在提供CVS存储库。我试了一下,它比PVCS好一点。当然,我是唯一一个使用存储库的人。然而,当我尝试重新排列文件的结构时,我确实感到沮丧,因为我不喜欢我最初导入它们的方式。它在CVS中并没有真正奏效。
几年后,我正在开展另一个个人项目,我的网络托管服务提供商提供了易于设置的Subversion(SVN)存储库。我花了一些时间研究它才能正常运行,但是一旦我超越了最初的学习曲线,我就喜欢它了。
不久之后,我意识到我喜欢拥有源代码控制权,而且我目前的工作没有。所以我传福音,经过很长一段时间,我的团队实施了Source Safe,因为我们在Visual Studio工作,而且通常是微软的商店。我很想使用它,但不久之后我发现我丢失了文件而且Visual Studio把东西放在了错误的地方并且我在一个项目上工作了一段时间然后将我的工作导出到另一个地方并发现它要么不会导出,要么只会导出解决方案中的某些项目。这让我意识到即使我以为我使用的是“版本控制系统”,但最安全,最健壮和完整的代码副本是我的工作副本。与源控制应该完全相反。
所以上周我厌倦了Source Safe,我去搜索了。在研究了几个解决方案之后,我决定尝试一下git。我不会说这一切都是玫瑰花,因为我已经有了一些学习曲线来让它做我想做的事情。但是,我已经非常喜欢将我的所有工作和个人项目转换成它。关于它的一个非常好的事情是我不需要一个集中的存储库,所以我可以使用它而不需要在工作中经过大量的繁文缛节来安装它。
所以总之我会推荐git,我在windows中使用Mysysgit,它还有额外的好处,就是给我一个bash shell。在Linux上,您可以从包管理器中安装它。如果您不喜欢git,请尝试使用subversion。如果您不喜欢其中任何一个,您可能也不喜欢CVS或PVCS。在任何情况下都不要尝试Source Safe,这太糟糕了。
答案 5 :(得分:2)
我发现http://unfuddle.com让我无法安装SVN或git。您可以在那里获得一个免费帐户并使用其中任何一个 - 此外,您可以在那里使用您的OpenID。
然后你就可以避免把它设置得恰到好处并专注于你将如何使用它!
答案 6 :(得分:2)
rp
答案 7 :(得分:1)
我同意你的观点,Source Safe作为一个源代码控制系统很糟糕,但请记住,使用Source Safe比使用Joel Spolsky所说的“随身携带软盘”要好得多。
对于初学者来说,这可能不是一个坏主意,因为根本没有源代码控制的成本要高得多。
答案 8 :(得分:1)
每个工具都有它的优点和缺点。这是你的要求是什么的问题。不幸的是,与许多其他问题一样,这个问题通常不是选择的最佳工具,而是某人熟悉的工具。例如,如果您不需要很多分支,并且您的团队规模较小且本地化,那么几乎所有vcs都可以完成这项工作(SourceSafe除外)。如果您需要分支(这几乎必然意味着您还需要进行合并),您的团队分布,您需要高级安全性(分包商不允许整个源代码树),任务跟踪等等,事情会发生变化。还有一个问题成本有三种不同的方式:许可证成本,维护成本(某些工具非常复杂,以至于您实际上只需要控制存储库的人员)和培训成本。
因此,建议使用一种工具而不是另一种工具就像建议什么是最好的编程语言。
只是一些指示:
从我使用的工具中,如果您的开发人员不是很有经验(如果您不介意支付相当昂贵的许可证),我会选择StarTeam,如果您有一些经验丰富的vcs人员可以设置git向其他人提升环境。 Mercurial看起来也是一个有趣的竞争对手,似乎有更好的UI。
Continuus,PVCS / Dimensions和ClearCase对于几乎所有项目而言都太慢,太复杂且太昂贵。如果有人坚持选择其中一个,我会选择ClearCase。
我没有使用很多人似乎喜欢的Subversion(但是,我觉得这种情况在不久的将来会发生变化)所以不能评论它与我使用的其他工具(通常作为建立和/或发布经理)。
至于第一个选择的工具,Git,Bazaar和Mercurial的问题是它们是分布式的vcs。这与您拥有中央存储库的传统服务器 - 客户端模型不同。为了学习这些东西,我建议也阅读有关概念的内容。例如,分支只是通过尝试自己可能无法正确理解(对于不同的情况,存在不同的分支策略)。如果你是唯一一个访问存储库的人,那么它就是非常不同的,例如合并冲突不会是一个问题(你可能会看到它们但你也很容易修复它们,因为你知道两个分支中的代码)。当然,你会了解检查,检查等等,但我认为这些问题一开始并不特别困难。
vcs的问题在于他们倾向于使用不同的术语。在StarTeam,否则易于使用他们出于某种原因坚持使用术语“签出”和“签出和锁定”。后者是大多数人认为的第一个。这是有原因的(即使您没有独占锁也可以编辑文件),但是为了避免混淆,将这些“获取”和“签出”称为更有意义。
答案 9 :(得分:0)
任何事情,但我会学习像git或subversion这样的现代系统。我的第一个VCS是RCS,但我得到了基础知识。
答案 10 :(得分:0)
好吧,如果你只想自己学习,我会说你应该选择免费的东西,比如颠覆。如果您以前从未使用过源代码控制,那么这实际上取决于您的需求。
答案 11 :(得分:0)
我的第一次曝光是以WinCVS作为客户的CVS。这太可怕了。接下来是Subversion,TortoiseSVN和Eclipse的集成。这是直觉的,天堂般的。我认为使用带有TortoiseCVS和Eclipse的CVS也会很好,尽管我更喜欢SVN处理修订的方式。每个签入都会对整个存储库进行版本控制,而不是单个文件。
答案 12 :(得分:0)
我也推荐Subversion。设置不需要太长时间,它是免费的,并且有一本非常好的在线书籍可以解决基础知识以及一些高级主题: http://svnbook.red-bean.com/
答案 13 :(得分:0)
使用tortoisesvn进行颠覆。 (tortoisesvn因为你可以在视觉上看到很多内容,并且会为命令行提供一个很好的跳跃点。)那里有很多文档,很可能你会在职业生涯中至少看到一点。几乎我所工作和采访的每家公司都运行SVN。
答案 14 :(得分:0)
如果您希望在入门时学习商业产品Perforce提供免费的客户端和服务器,服务器支持两个用户和五个客户端工作区。
在我以前的工作地点,它不仅被我们的程序员用于代码,而且用于艺术资产和游戏关卡,以及我自己的文档。
答案 15 :(得分:0)
Subversion是一个很好的开始。它是非常稳定和现代版本控制系统。 开始学习Subversion的最佳在线资源是Version Control with Subversion。就服务器和客户端软件而言,有很多选择。我个人更喜欢(适用于Windows环境)。
VisualSVN服务器
TortoiseSVN shell集成客户端和
AnkhSVN Visual Studio Subversion Add-On
同样,使用Subversion有很多选择。此外,它是一个不断发展的版本控制系统(与过时的SourceSafe不同)。它可以很容易地与众多自动构建工具(CruiseControl,FinalBuilder)和错误/问题跟踪系统(JIRA)集成。
如果您正在寻找最先进的版本控制系统,请选择Git(由Linus Torvalds开发)。但如果您对版本控制系统完全不熟悉,我建议先从颠覆开始。