最佳开发人员的最佳版本控制
我目前是一个孤独的开发人员;请分享我们对单机开发者而言良好的VC设置的经验。
我的约束是;
- 我在多台计算机上工作,需要保持同步
- 有时我离线工作
我当前正在使用Subversion(仅客户端到远程服务器),并且工作正常。我对Mercurial和git DVCS感兴趣,但是它们的用例都不符合我的情况。
编辑:在与客户一起试用后,我已经将自己的开发工作迁移到了Fossil http://www.fossil-scm.org/。我真的很喜欢自动同步我的存储库的功能(减少意外的分叉),文档支持(wiki和嵌入式/版本化),它们支持我需要在不同的空间中记录代码和项目,易于配置的问题跟踪器,易于访问控制,可换肤的Web界面和有用的社区。
解决方案
Subversion的效果很好(尤其是与TortoiseSVN一起使用)。我认为在单个开发人员场景中,任何分布式VC都不会有优势。
编辑:当我最初回答时,我没有注意到"有时我离线工作"部分。
在这种情况下,我想我们必须权衡DVCS的添加复杂性,因为它会为我们提供脱机历史记录/修订。
SourceGear Vault对于一名开发人员是免费的,并且非常好。
对于Git而言,脱机工作绝对有意义。我们可以浏览整个历史记录,进行提交,进行合并,创建分支,本质上可以离线完成与存储库相关的所有操作。此外,我们可以设置一个中央存储库,即"主",即将所有更改推送到该中央存储库。这样,我们总是知道最新的代码在哪里,但是如果需要,还可以将更改从一台计算机发送到另一台计算机。
我最近将我所有的80多个Subversion存储库都转换为Git,而且我没有回头。
在这种情况下,我总是推荐darcs(这是我对类似问题的答案),因为它的命令行用户界面使用起来很有趣,而喜悦是我自己开发中想要的:)
Git捆绑了一些可行的GUI,但是与darcs相比,当我点击命令行以用于个人项目时,与darcs相比,它显得笨拙。
两者都可以满足我们脱机工作的需求,并且它们都易于与更改同步。
我建议assembla.com他们提供免费的svn,wiki和trac。没有比这更好的了!
Subversion需要访问集中式存储库。如果我们脱机工作并且在多台计算机上工作,则意味着我们无法在脱机状态下进行修订。
Unix的基本解决方案是使用RCS将历史记录保存在工作目录中,并使用Unison在不同计算机之间同步工作目录(包括历史记录)。主要警告是,如果我们切换计算机,则在开始提交新修订之前,首先需要同步它们。如果这是一个问题,则最好查看真正的DVCS。
集市:请在5分钟内查看单独的用例和集市。
特别是对于脱机使用,分布式版本控制系统是必经之路。
如果我们对颠覆感到不满,建议我们看看SVK
每个人都可能会告诉我们,他们最喜欢的DVCS最适合我们。我会告诉你水银是最好的! ;-)
但这真是胡扯。我们肯定需要DVCS,但是请尝试所有的DVCS,或者至少尝试最常用的DVCS,然后自行选择。选择我们认识的专家的DVCS也是明智的选择,顺便说一句。我建议至少(或者阅读Mercurial,Git和Bazaar的文档)。 SVK可能具有与SVN进行交互的理想功能,但是上次我检查了它们有讨厌的性能问题。 Git也有一些SVN交互插件AFAIK。
我们可能会发现我提出的问题的答案很有帮助:一个人秀(一个大军?)的替代VSS:
一个人表演(一个人的大军?)的替代VSS的方法
我们必须尝试DVCS(或者我所说的peer2peer VCS)。我同意无人问津。不要浪费时间用svn和所有围绕它制作的软件来使它有用。
DVCS比旧的和过时的客户端-服务器样式更直观。 SVN不知道什么是标签或者分支。对于Svn来说,它们仅仅是副本。
例如:很难将标签实现为修订号的同义词。
在标签上就是这样。我们无法像在svn中那样继续跟踪标签的版本。
阅读此处dvcs指南以开始。然后,我们可以使用svk,Mercurial aka hg或者git。但是请不要回到过去
可能我建议使用一个相当新的版本控件,称为化石。
这不是我的项目,它是由执行SQLite的同一人Richard Hipp博士编写的。整个存储库是一个SQLite文件,因此非常可靠。我们具有内置的Wiki和票务系统。我们可以拥有许多具有不同权限的用户,因此,例如,可以授予用户签发票证的权限,但不能查看源代码。
这非常简单,直接,并且可以作为分布式系统使用,这意味着我们可以在本地和远程克隆和签出。
可以在http://www.fossil-scm.org/上找到更多信息,如果仔细观察,我们会发现整个站点实际上是化石。
化石给我留下了深刻的印象,那就是它只是一个文件而已。整个化石计划规模很小,但是考虑到作者是谁,这确实不足为奇。
而且由于存储库是一个sqlite文件,因此我们只需复制它就可以进行备份。
我是分布式版本控制的忠实拥护者。我玩过git,mercurial和bzr,现在我在所有项目中都使用git。所有这三个都非常适合个人使用,因为在计算机上创建新存储库非常简单。我们不必运行任何服务器。
以下是在多台计算机之间共享存储库的一些想法。 1)使用某些托管服务,例如github。通常,这些项目对于开源项目是免费的,而对于商业项目则是低费用的。我们在工作中使用github。 2)使用保管箱创建共享的Internet备份磁盘,所有计算机都可以访问该磁盘。不到2 GB的空间是免费的。 (如果我们使用的是Ubuntu,则可以选择Ubuntu One。)将主git存储库放在dropbox上,然后在每台计算机上放置本地存储库。 (因此,Dropbox的作用与github相同。)它是完全免费的,可让我们轻松地脱机工作,并在以后需要时与其他开发人员共享存储库,并会自动进行备份。
另外,如果我们真的要使用SVN,请查看托管解决方案,例如cvsdude(尽管名称,它们确实运行SVN),而不是运行我们自己的服务器。我们将可以从任何地方访问代码,每月只需花费约5-10美元。