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

时间:2008-09-26 10:20:21

标签: svn git version-control project-management bug-tracking

我现在是一个孤独的开发者;请分享您对单独开发人员的VC设置的经验。

我的约束是;

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

我目前正在使用Subversion(只是远程服务器的客户端),这样就可以了。我对Mercurial和git DVCS感兴趣,但他们的用例都没有对我的情况有意义。

编辑:在与客户进行试用之后,我已将我的活动开发迁移到Fossil http://www.fossil-scm.org/。我非常喜欢自动同步我的存储库(减少意外分叉),文档支持(包括wiki和嵌入式/版本化)的功能,它支持我在不同空间记录代码和项目的需要,易于配置的问题跟踪器,很好的访问控制,skinnable web界面和有用的社区。

13 个答案:

答案 0 :(得分:50)

每个人都可能会告诉你他们最喜欢的DVCS是最适合你的。我会告诉你Mercurial是最棒的! ; - )

但那是废话。你肯定需要一个DVCS,但尝试所有,或至少是最常用的,并自己做出选择。选择你认识大师的DVCS也是一个明智的选择,BTW。我建议尝试(或阅读文档)至少Mercurial,Git和Bazaar。 SVK可能具有与SVN交互设计的理想功能,但上次我检查它们有令人讨厌的性能问题。 Git还有一些SVN交互插件,AFAIK。

答案 1 :(得分:44)

我可能会建议一个名为fossil的新版本控件。

这不是我的项目,它是由Ri​​chard Hipp博士编写的,他是SQLite的同一个人。整个存储库是一个SQLite文件,所以它非常可靠。您有一个内置的wiki和票证系统。您可以让许多用户拥有不同的权限,因此您可以为您的用户提供发票的权利,但不能查看源代码。

这非常简单,直接,它可以作为分布式系统使用,这意味着您可以在本地和远程克隆和检出。

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

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

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

答案 2 :(得分:30)

离线工作对Git来说绝对有意义。您可以浏览整个历史记录,进行提交,合并,创建分支,基本上可以脱机执行与存储库相关的所有操作。此外,您可以设置一个“主”的中央存储库,即您将所有更改推送到该中央存储库。这样,您始终可以知道最新代码的位置,但如果您需要,您还可以将更改从一台计算机发送到另一台计算机。

我最近将所有80多个Subversion存储库转换为Git,我没有回头。

答案 3 :(得分:13)

Bazaar:请参阅solo use caseBazaar in 5 minutes

特别是对于离线使用,distributed version control system是最佳选择。

答案 4 :(得分:7)

颠覆效果很好(尤其是TortoiseSVN)。我不认为任何分布式VC在单个开发人员场景中都有优势。

编辑:当我最初回复时,我没有注意到“有时我工作离线”部分。 在这种情况下,我认为你必须增加DVCS的复杂性,因为它可以为你提供离线历史/修订。

答案 5 :(得分:3)

我总是建议darcs用于这种情况(here's my answer to a similar question),因为它的命令行用户界面是一种使用的快乐,而欢乐就是我自己开发的目标:)

Git捆绑了一些可行的GUI,但是当我点击命令行用于个人项目时,我发现它与darc相比太笨重了。

要么满足您离线工作的需要,又可以轻松地同步更改。

答案 6 :(得分:2)

Subversion需要访问集中式存储库。如果您正在离线工作并且从多台计算机上工作,则意味着您无法在离线时进行修订。

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

答案 7 :(得分:2)

你可能会发现我问过的问题的答案是有帮助的:替代VSS的单人秀(一支军队?):

Alternative to VSS for a one man show (army of one?)

答案 8 :(得分:2)

你必须尝试DVCS(或我称之为peer2peer VCS)。我同意无处不在的人。不要浪费时间用svn和所有柔软的环绕它使它有用。 对于旧的和不赞成的客户端 - 服务器风格,DVCS更为直觉。 SVN不知道什么是标签或分支。对于Svn来说,所有这些只是副本。

例如:将标记实现为修订号的同义词非常困难。

在mercurial中,标签就是这样。您无法在svn中跟踪标记的版本。

在这里阅读dvcs guide开始。然后你可以使用svk,mercurial aka hg或git。但请不要回到过去

答案 9 :(得分:1)

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

以下是跨多台计算机共享存储库的一些想法。 1)使用一些托管服务,如github。通常这些是免费的开源项目和商业项目的低费用。我们在工作中使用github。 2)使用dropbox创建所有计算机都可以访问的共享的Internet备份磁盘。它的免费容量不到2 GB。 (如果你在Ubuntu上,Ubuntu One是另一种选择。)将你的主git存储库放在dropbox上,然后在你的每台计算机上放置本地存储库。 (因此,dropbox扮演与github相同的角色。)它完全免费,允许您轻松脱机工作,如果需要,可以让您与其他开发人员共享存储库,并自动备份。

此外,如果您真的想使用SVN,请查看cvsdude等托管解决方案(尽管名称,它们确实运行SVN),而不是运行您自己的服务器。您可以从任何地方访问您的代码,每月只需5-10美元。

答案 10 :(得分:0)

SourceGear Vault对于一位开发者来说是免费的,非常好。

答案 11 :(得分:0)

我推荐assembla.com - 他们提供免费的svn,wiki和trac。不能比这更好!

答案 12 :(得分:0)

如果你对颠覆感到满意,我建议你看一下SVK