版本控制入门
我需要实现版本控制,即使只是在家做的发展。 我已经阅读了Subversion在过去几年中的出色performance,并且正在致力于学习这方面的知识,直到我听说Git是即将到来的版本控制系统。
考虑到这种情况,我是否应该坚持一下,看看哪一个出来? 他们的相对优势是什么?
我在Git中注意到的一个问题是没有很多全function的GUI,这对于我的团队中的许多用户来说是非常重要的。
此外,不介意如何开始与其中一个的build议。 (教程等)
版本控制最重要的是:
只是开始使用它
不使用版本控制是一个可怕的想法。 如果您不使用版本控制,请立即停止阅读并开始使用它。
转换是非常容易的
cvs<->svn<->git<->hg
你select哪一个并不重要。 只要select最简单的一个供您使用,并开始logging您的代码的历史。 您以后可以随时迁移到其他(D)VCS。
如果你正在寻找一个易于使用的graphics用户界面看看TortoiseSVN(Windows)和版本(Mac) (build议编码不带注释 )
编辑:
pix0r说:
Git有一些很好的function,但是除非你已经使用了像CVS或Subversion这样的标准,否则你将无法欣赏它们。
这个。 如果你不知道什么版本控制可以为你做,使用git是毫无意义的。
编辑2:
刚刚在reddit上看到了这个链接: Subversion Cheat Sheet 。 很好的快速参考svn命令行。
使用颠覆,它很容易设置,易于使用,并有大量的工具。 任何未来的版本系统都会从SVNfunction导入,所以如果您的需求不断增长,就不会有变化。
Subversion Book是学习这个工具的最佳select。 那里可能还有其他的快速入门教程,但这本书是您find的最好的单一参考书。
Git有一些很好的function,但是除非你已经使用了像CVS或Subversion这样的标准,否则你将无法欣赏它们。 我肯定会赞同以前的海报,从Subversion开始。
如果您是版本控制新手,请阅读以下内容:
源代码pipe理HOWTO
去SVN。 如果你之前从来没有使用过源代码控制,那对你来说无所谓。
另外,使用源控制系统也没有涉及大量的学习。 如果你学习了一个,可以在以后轻松切换到另一个。
SVN是一个伟大的工具,它应该照顾你的大部分需求。 而且由于它已经出现,它拥有一个公平的GUI工具共享者(例如TortoiseSVN)。
去SVN。
有关大多数基本概念的友好解释,请参阅“视觉向导版本控制” 。 这篇文章非常适合SVN。
我使用过RCS,CVS,SCCS,SourceSafe,Vault,perforce,subversion和git。
我已经评估过BitKeeper,Dimensions,arch,bazaar,svk,ClearCase,PVCS和Synergy。
如果我今天不得不开始一个新的仓库,我会selectgit 。 把手放下。
它是自由,快速和积极的发展。
你可以使用它作为任何使用git-svn的subversion版本库的客户端。
它岩石。
@ superjoe30
如果你是唯一的程序员,那么在你自己的电脑上使用源代码pipe理呢? 这是好的做法吗? 有没有相关的提示或技巧?
我发现git实际上更容易,因为你不需要服务器或担心inputURL等等。 你的版本控制的东西只是住在你的项目中的.git
目录,你只要继续使用它。
5秒介绍(假设你已经安装了它)
cd myproject git init git add * # add all the files git commit
下次你做一些改变
git add newfile1 newfile2 # if you've made any new files since last time git commit -a
只要你这样做,git就会退缩。 如果你搞砸了,你的代码在好的git仓库中是安全的。 这很棒
- 注意:你可能会发现把git的东西放进git比把它放进去要困难一点,但是这样做比根本没有这个文件更可取!
从我自己的经验来看,我不会推荐git作为版本控制的入门。 我已经使用了几个月,现在我的印象是它非常强大,现在我已经有了一些头脑 – 合理的直觉。 然而,即使我已经使用了版本控制多年,学习曲线非常陡峭。 它也受到过于performance的支持 – 它支持许多不同的工作stream程和开发模式,但在“最好的”使用方式上的唯一指导是在Googlesearch中深入几页,这也使新手难以挑选向上。
也就是说,从git的白板开始实际上可能会更容易一些 – 我的VCS体验都是集中式的版本控制(CVS,SVN,Perforce …),而我的(持续的!了解分布式模型的含义。 我简单地看了一下像Bazaar和Mercurial这样的DVCS,他们似乎对新手友善些。
无论如何,正如其他人所说的那样,Subversion可能是习惯版本控制思维并获得VCS好处的实践经验(回滚,分支机构,协作开发,更容易的代码审查等)的最简单的方法。
哦,不要从CVS开始。 它仍然在实际使用,并有优势,但恕我直言,它有太多的历史怪癖和执行问题(非primefaces提交!)是一个很好的学习方式。
我的投票进入Subversion。 这是非常强大的,但易于使用,并有像TortoiseSVN一些伟大的工具。
但正如其他人之前所说,只是开始使用它。 源代码控制是软件开发过程中非常重要的一部分。 没有“严肃”的软件项目应该没有它。
在我目前的工作中,我的前任没有使用任何forms的版本控制。 至less在三个不同的地方,他保留了所有的项目。 任何随机项目文件夹可以预期至lessfind一个文件夹名称“项目(OLD)”和一个名为“项目”
通过版本控制,您不必制作“安全”版本的副本。 你不必担心你的IDE会破坏你正在工作的文件(我在看你,REALBasic 5.5),因为每天都很容易提交(阅读:保存)你的工作。
不用说,我发现它存在的那一天安装了版本控制。
而且,TortoiseSVN使得对数据库的操作变得如同右键点击一个文件夹一样简单。
如果你想避免任何命令行的工作,也尝试为您的服务器的可视化svn 。
如果你在Mac OSX上,我发现http://www.versionsapp.com/ ">Versions是一个令人难以置信(免费)的GUI前端到SVN。
别等。 挑一个,然后去吧。 所有的系统都有其优缺点。 你的力量可能会消失,你的电脑被偷了,或者你忘了撤销一个重大的改变,所有你的代码被炸,而你等着看谁是胜利的。
在版本控制系统之间切换并不困难。 正如其他人所说,重要的是尽快开始使用任何东西。 使用源代码控制而不使用源代码控制的好处大大超过了不同types源代码控制之间的差别益处。
请记住,无论您使用何种版本的源代码控制,您都可以通过将旧系统中的文件放置到磁盘上,然后将这些原始文件导入到新系统中,来进行强制转换。
此外,熟悉源代码控制基础知识作为软件开发人员是非常非常重要的技能。
使用TortoiseSVN(如果在Mac上是version.app)。 只需安装即可。 如果您需要一个地方来托pipe您的代码,请查看http://beanstalkapp.com/
SubVersion是您的最佳select,正如Karl Seguin指出的移动到另一个版本系统不会是一个问题。 也SVN有很多在客户端(TortoiseSVN)易于使用的graphics用户界面。
http://www.snee.com/bobdc.blog/2007/08/getting_started_with_subversio.html http://dojo.jot.com/WikiHome/Getting%20Started%20With%20Subversion
如果你select使用颠覆,而你想要托pipe你自己的svn服务器,那么有一个非常好的,简单的基于Windows的服务器叫做VisualSVN服务器。 它隐藏了build立一个Apache服务器的复杂性,你基本上只是去下一个下一个。 用户configuration使用webUI而不是configuration来处理
http://www.visualsvn.com/server/
使用公共服务rlike beanstalk可能更容易,但有些人喜欢有自己的仓库,无论是速度或安全性
当我决定我必须使用代码版本pipe理系统时,我四处寻找有关如何开始的好教程,但没有find任何可以帮助我的教程。
所以我简单地为客户端安装了SVN Server和Tortoise SVN,并深入了解,并学习了如何使用它。
开始使用SVN来进行实际的工作,但是尽量花时间去处理Git和/或Mercurial。 SVN在生产中是相当稳定的,但是最终你会面临一个需要一个分布式SCM的场景,届时你将会得到适当的武装,新的系统将足够成熟。
是的,SVN的偏好,除非你真的需要混帐的特殊function。 SVN很难; 这听起来像git住得更复杂。 你可以从像Beanstalk这样的人那里获得托pipe的svn – 除非你有内部的Linux人员,否则我真的会推荐它。 事情很容易出错,很高兴有其他人来解决这个问题。
Eric Sink提供了一个非常好的教程 ,无论您使用哪种系统,都值得一读。
superjoe30写道 :
相关的问题(也许答案可以编辑来回答这个问题):
如果你是唯一的程序员,那么在你自己的电脑上使用源代码pipe理呢? 是这个好习惯吗? 有没有相关的提示或技巧?
我用我所有的个人项目SVN。 我开始在家用机器上运行svn,但最终迁移到Dreamhost。 他们的包含Subversion的托pipe包非常合理。
如果在一个窗口盒子上,一个快速而脏的溶液是CVSNT。 易于使用,只需设置并运行良好。
我自己更喜欢SVN,但这是一个很好的快速使用。
我肯定会selectCVS以上的SVN,如果只是因为学习使用CVS进行源代码pipe理的人倾向于使用“ svn delete
”,那么“ svn add
”而不是“ svn move
”。 这使得更难find特定文件的所有以前的版本。 你可以随时升级到使用git-svn。 我个人认为比hg更容易学习,但真正使用SVN的主要原因是它已经在很大程度上成为了开源软件的事实上的版本控制系统。
如果您计划学习/使用D ,则几乎必须访问第三方存储库,如DSource 。
@ superjoe30是的,绝对的。 一旦你开始使用版本控制,你永远不会回头。 我用它的一切,甚至我的“家”文件夹。
@Orion Edwards Subversion不需要服务器。 您可以直接访问本地存储库(当然,通过客户端),并且不涉及服务器进程。
只要使用TortoiseSVN,即使不知道实际的Subversion命令,你也可以生活……但这很糟糕。 幸运的是,当你无价的存储库首先被损坏的时候,总会有一个很好的机会来学习它们。
是的,它发生了。
正如其他地方多次提到的那样,Just Do It。 通过阅读红皮书中的快速入门指南,我可以立即从Windows下的Subversion开始。 一旦我指出了TortoiseSVN的存储库,我就开始工作了。 我花了一段时间才得到更好的点,但他们是轻微的高峰来克服。
我build议安装Subversion服务,而不是使用file:// URLs,但这大多是个人偏好。 对于存储在开发机器上的存储库,file://工作正常。
从个人经验来看,svn是我的build议。 你甚至可以使用像Beanstalk这样的服务来提供免费帐户(显然有限制,但足够用于任何小型项目)来testing水域。 但正如其他人所说,git是优越的,可能值得研究。
编码恐怖有一个伟大的职位,关于如何在Windows上设置Subversion 。
在教程之后,我能够在本地运行Subervsion和TortoiseSVN,并且获得了我所需要的教育。
就Git而言,把它们两个都做一个实验可能是一个好主意,要了解哪个符合你的具体开发实践。