最好的版本控制单独的开发人员

我目前是一个单独的开发者; 请与您分享一个独立开发人员的良好VC设置经验。

我的约束是;

  • 我在多台机器上工作,需要保持同步
  • 有时我离线工作

我目前正在使用Subversion(只是客户端到远程服务器),这是工作正常。 我对Mercurial和git DVCS感兴趣,但是没有一个用例对我的情况有意义。

编辑:我已经把我的活跃发展移植到化石http://www.fossil-scm.org/与客户端试用后。 我真的很喜欢这些function来自动同步我的仓库(减less意外叉),文档支持(维基和embedded/版本),支持我需要在不同的空间文档的代码和项目,易于configuration问题跟踪,控制,skinnable网页界面和有用的社区。

我可能会build议一个相当新的版本控制叫化石。

这不是我的项目,它是由Ri​​chard Hipp博士写的,他是做SQLite的人。 整个存储库是一个SQLite文件,所以它是非常可靠的。 你有一个维基和一个内置的票务系统。你可以有许多不同的权限的用户,所以你可以例如给你的用户权利发行票,但不能查看源代码。

这很简单,直接,它作为一个分布式系统,这意味着你可以克隆和签出本地和远程。

更多的信息可以在http://www.fossil-scm.org/上看到,如果你仔细观察,你会发现整个网站实际上是化石。;

有一点让我印象深刻的是,它只是一个文件,就是这样。 整个化石计划是相当小的,但考虑到作者是谁,这并不是一个惊喜。

由于您的存储库是一个sqlite文件,你只需复制它,你有一个备份。

每个人可能会告诉你,他们最喜欢的DVCS是最适合你的。 我会告诉你Mercurial是最好的! 😉

但是这是废话 。 你肯定需要一个DVCS,但是尝试所有的,或者至less是最常用的,然后自己做出select。 select你认识上师的DVCS也是一个明智的select,BTW。 我build议尝试(或阅读文档)至lessMercurial,Git和Bazaar。 SVK可能具有与SVN交互的理想function,但是最后一次我检查了它们的性能问题。 Git也有一些SVN交互插件,AFAIK。

离线工作对Git来说绝对有意义。 您可以浏览您的整个历史logging,进行提交,合并,创build分支机构,实质上完成与您的存储库相关的所有事情。 此外,您可以设置一个“主”的中央存储库,即将所有更改推送到该中央存储库。 这样你就可以知道最新的代码在哪里,但是如果你需要的话,你也可以从一台机器发送更改到另一台机器。

我最近把我所有的80+ Subversion版本库都转换成了Git,而且我还没有回头。

市集 : 在5分钟内看到独奏用例和集市 。

特别是对于离线使用, 分布式版本控制系统是一个很好的select。

Subversion的工作很好(特别是与TortoiseSVN)。 我不认为任何分布式VC在单个开发者场景中都有优势。

编辑:当我回答时,我没有注意到“有时我离线工作”部分。 在这种情况下,我想你必须重视DVCS增加的复杂性,因为它给你离线的历史/修订。

我总是推荐达尔斯这种情况( 这是我的回答类似的问题 ),因为它的命令行用户界面是一个喜悦的使用和喜悦是我想从我自己的发展:)

Git捆绑了一些可行的graphics用户界面(GUI),但是当我点击命令行用于个人项目时,我发现它与darcs相比太笨拙了。

要么会满足您脱机工作的需要,而且它们都易于同步更改。

Subversion需要访问一个集中的存储库。 如果您正在从多台机器脱机工作,则意味着您无法在脱机状态下进行修改。

Unix解决scheme的核心是将工作目录保存在RCS中 ,并使用Unison同步不同机器之间的工作目录(包括历史logging)。 主要的警告是,如果您切换机器,您首先需要在开始提交新版本之前将其同步。 如果这是一个问题,你最好看看一个真正的DVCS。

你可能会发现我问的问题的答案是有帮助的:一个人演出(一个军队)的VSS替代scheme:

一个人演出(一个人的军队?)替代VSS

你必须尝试一个DVCS(或者我称之为peer2peer VCS)。 我同意无知。 不要浪费时间与svn和所有的软了围绕它使其有用。 DVCS更直观地表示旧的和不推荐的客户端 – 服务器风格。 SVN不知道什么是标签或分支。 对于Svn,所有的只是副本。

例如:将标签作为版本号的同义词是非常困难的。

在mercurial标签就是这样。 你不能像svn那样保持跟踪版本的标签。

在这里阅读dvcs指南开始。 那么你可以使用svk,mercurial aka hg或者git。 但请不要及时回去

我是分布式版本控制的忠实粉丝。 我玩过git,mercurial和bzr,现在我用我的所有项目的git。 所有这三个都非常适合个人使用,因为在您的计算机上创build一个新的存储库非常简单。 您不必运行任何服务器。

以下是在多台计算机上共享您的存储库的一些想法。 1)使用一些托pipe服务,如github。 通常,这些对于开源项目是免费的,对于商业项目则是低收费的。 我们在工作中使用github。 2)使用dropbox创build一个共享的互联网备份磁盘,您的计算机可以访问。 它是免费的,less于2 GB。 (如果你在Ubuntu上,Ubuntu One是另外一种select。)把你的master git仓库放在dropbox上,然后把本地仓库放到你的每台计算机上。 (所以,dropbox和github起着同样的作用)。它是完全免费的,可以让你轻松离线工作,并可以在以后与其他开发者共享资源库,并且可以自动备份。

另外,如果你真的想使用SVN,像cvsdude这样的托pipe解决scheme(尽pipe名称,他们运行SVN)而不是运行你自己的服务器。 你将能够从任何地方访问你的代码,它只会花费你约$ 5-10 /月。

SourceGear Vault对于一个开发人员是免费的,而且非常好。

我build议Assela.com – 他们提供免费的svn,wiki和trac。 无法得到比这更好的!

如果你对颠覆感到舒服,我build议你看看SVK