还是传统的客户端-服务器 VCS 更合适?我目前正在使用 TortoiseSVN,但我对 DVCS 很感兴趣,但我不确定尝试使用类似这样的东西是否是一个好主意。
6 回答
由于您仍然可以推送到另一台也运行 Git/Mercurial/Bzr/etc 的机器上,因此您仍然拥有多计算机备份安全性,您希望有任何一种方式。但是,如果您在旅行时编码,拥有完整的存储库访问权限可能是一个巨大的优势,那么当您再次有网络连接/回家/等时,只需重新同步到您的服务器。
是的。在我看来,DVCS 比传统的基于服务器的系统更适合单独开发。当只有一个开发人员时,许多基于服务器的系统的功能只是不必要的复杂性。
另一方面,如果您独自一人,您可能不会注意到 DVCS 和 SVN 之间的任何主要生产力差异。
我想是的。一方面,如果您使用多台计算机,它的扩展性会更好,因为合并更容易。其次,您可以离线提交,这一般来说非常棒。
我强烈建议使用分布式的。在 Windows 上,我选择了 Mercurial,并且对它非常满意。
大优点:
- 本地提交速度很快,可以经常提交(测试、代码、重构、提交)
- 分支很简单
- 无论您身在何处,都可以提交。
- 轻松移动文件(不再像我使用 SVN 那样弄得一团糟)
- 只是更简单。一个软件完成所有工作(包括管理任务)
- 文件系统更干净。到处都没有 .svn,只有一个文件夹
- 忽略文件列表只是存储库中的另一个文件,并自动复制到每个克隆。比 SVN 更容易保持清洁。
- Bitbucket.com 很好,并提供了一个免费的私有存储库
缺点:
- (对于某些)GUI 工具不存在
- 您可能仍然需要 SVN 才能连接到各种源存储库。例如需要使用两个系统。
是的。我为自己的爱好项目改用 DVCS(Git 和 Mercurial)有两个主要原因。首先是保存备份的问题,另一个是我经常四处旅行并使用几台地理上分开的计算机。
快速简便的备份
我至少使用两个存储库克隆。一个是我工作区中明显的本地文件,另一个是我保存在文件服务器(或在线存储库,如github或bitbucket)上的文件,每当我在本地完成工作时都会转储它。进行备份就像同步存储库一样简单,换句话说,将您的更改推送到上游。
在不同的位置或计算机上工作
对于有爱好项目的开发人员来说,这可能是不太常见的情况,因为我倾向于四处旅行。除了家里的电脑外,我有时会留在父母家,那里放着我的旧电脑(这对于业余爱好编程来说足够快了)。每当我想破解新功能时,我都可以在那台计算机上完成它,然后同步存储库,这样当我回到家时我就会收到这些更改。
易于分支/合并
DVCS 非常自动地处理分支/合并已经不是什么秘密了。合并冲突确实会发生,但即使没有集中式版本控制工具(例如 Subversion)中的冲突,即使在简单的场景中也对合并没有太大帮助。尽管我不经常在个人项目中使用此功能,但仍有一些开发人员这样做。
我认识一位编程承包商,他使用 git 来跟踪他自己在公司的专有系统上的工作,他仍在使用 SourceSafe 进行版本控制。Git 让他很容易通过对每个修复进行分支来跟踪单独的修复,即使他最终必须手动合并文件。当他需要将文件签入到 SourceSafe 时,他会查看不同分支中的差异以了解需要进行哪些更改,然后进行更改。可以说,他大部分时间都花在等待他的同龄人赶上来。
对于单个开发人员,每个 VCS 都可以。我会选择一个,它易于设置,几乎不需要配置。我个人喜欢单调。它是最早的之一,我仍然认为它是最好的之一。
实际上,我曾经最有趣的是使用darcs,但它是用一种相当丑陋的语言 (Haskell) 编写的,实际上在 Mac OS X 上从源代码构建它已经很痛苦了。
据说 Git 是一个很好的系统,但我不喜欢它由多个二进制文件和脚本等组成。我真正喜欢 darcs 和 Monotone 等系统的地方在于,只有一个二进制文件……仅此而已。没有杂乱的二进制文件,没有这种或那种语言的脚本,在二进制文件上,它可以做到这一切。