svn - 本地服务器的SVN,GIT或Mercurial

标签 svn git version-control mercurial git-svn

我想在本地服务器上安装一个版本控制系统。
我一直在研究svn和git的优缺点,甚至是mercurial。
我们目前有大约30-35个不同的网站。我会创建一个包含所有文件夹的repo吗?还有哪一个会更好地处理所有这些作为个人网站项目?Git还是SVN?
我还将不得不在我们的linux服务器上安装它,并为开发人员创建开发沙盒。涉案人员还使用windows和mac。
我只是在寻找来自经验的建议,以及如何在服务器上本地安装它们的指导链接。
至于应用程序,我相信tourtiousgit/svn在windows上很好,tower和版本在mac上也很好。

最佳答案

让我们尝试一个平衡的比较,前提是在您的场景中,您可能不需要任何高级功能。
比较
保管部
文件系统上的布局:SVN需要两件事,一个工作目录和一个存储库,来处理您的数据。这不仅会造成不必要的元数据重复,而且会使事情变得稍微笨拙。git和mercurial都可以将完整的历史记录保存在工作目录中(每个工作目录都是完整的存储库)。如果您不打算在服务器上拥有已签出的文件副本,这一点就不太相关(但无论如何,它比这要复杂一些,所以请记住,可能还有其他情况下,整个要点都不适用)。
工作目录混乱:svn在存储库的每个subdir中添加.svn子目录;git和mercurial只在顶层添加一个.git/.hg目录。
空间消耗:Git和Mercurial使用的存储机制往往比SVN的效率高得多。Git的缺点是存储库必须偶尔进行优化(如果没有非常大的文件,优化速度会相当快);我不知道这是否对Mercurial是必要的,但我怀疑不是。
结论:我推荐git或mercurial。
特征
因为您甚至不需要git/mercurial更好的合并功能,所以我不认为这是一个决定因素。如果您计划同时处理多组更改,则这不适用;在这种情况下,git/mercurial可能会使您的工作更轻松。
速度
众所周知,git和mercurial比svn快,特别是因为它们的设计允许在本地执行许多操作。
查看旧的东西:在svn中查看更改历史意味着svn必须连接到远程存储库并查看那里;在(例如)git中,历史通常在svn建立连接之前显示。
依赖于操作系统:Git的许多优化主要应用于Linux;比如说,在Windows上,您可能会遇到更糟糕的性能。我不知道,其他竞争者的情况可能也一样。
传输:git和mercurial在几乎任何场景中发送和接收新更改的速度都比svn快得多。
结论:如果你喜欢的东西快,git和mercurial比较好。在windows上,mercurial可能是一个更好的选择,但是如果您想确定,请咨询/执行实际的基准测试。
数字视频监控系统
Git和Mercurial允许开发人员继续处理他们的事情,并将他们组织成一组合理的提交,即使他们当前没有连接到您的网络。在svn中,提交只能在服务器上完成的同时进行,因此svn用户倾向于使用更单一(因此更难理解)的提交。另一方面,至少git甚至有一个工具可以使用二进制搜索快速找到引入bug的提交。再说一次,SVN可能会从底部出来。
复杂性
我是git的超级粉丝,我很容易同意git不是最方便用户的风投,至少如果你不了解它的设计的话。对于更高级的用例,我相信工具链可以弥补这一点;在您的例子中,您可能更喜欢Mercurial或SVN,除非您希望将来在更复杂的项目中使用相同的VCS。
工具、接口
我不太了解水星,所以我不太熟悉它的界面。事实上,我也没有为git使用任何华丽的shmancy接口,但我相信对于所有竞争者来说,有很多工具允许基本使用,比如说,不喜欢命令行的人。不过,我强烈建议您在对团队进行任何特定测试之前,先进行一系列小测试。
你的问题
对于不同的系统,存储库的结构往往不同。在svn中,在同一个存储库中有一大堆项目是可以的;git和mercurial强烈希望每个项目有一个存储库。对于共享代码,git至少有三个工具(其中两个是第三方)用于使用外部存储库,mercurial可能也有一些东西。我知道SVN也有类似的东西。
如果您将它们作为单独的存储库进行管理,我可能会推荐git或mercurial,因为正如前面所说的,它们每个存储库的开销往往较少。
如果使用任何更大的linux发行版,在服务器上安装git/mercurial/svn可能很容易;几乎可以肯定的是,有现成的软件包。如果您预期必须使用不同的每个用户访问控制来管理多个存储库,那么git有一个很好的管理系统gitolite。如果没有类似的事情,管理几个存储库可能会有点麻烦。

关于svn - 本地服务器的SVN,GIT或Mercurial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5793734/

相关文章:

svn - 如何在SVN中进行独家结帐?

svn - 如何在本地的 TortoiseSVN 中设置自定义作者姓名?

git pull --rebase 丢失了我的提交

git - `git stash` 如何处理未跟踪的文件?

linux - Git 从远程计算机 pull 一个存储库到本地计算机

git - 来自多个 Git 存储库的 Visual Studio 解决方案

svn - 颠覆 : good practices to administrate users and groups with the repositories

svn - 删除 SVN 提交的所有痕迹

version-control - 我可以清除具有大量未使用历史记录的 Mercurial 存储库吗?

android studio VCS本地历史太短