本地服务器的SVN,GIT或Mercurial

时间:2011-04-26 16:58:22

标签: svn git version-control mercurial git-svn

我希望在本地服务器上安装版本控制系统。 我一直在关注SVN和GIT的优缺点,甚至是Mercurial。

目前我们有大约30-35个不同的网站。我会创建一个包含所有文件夹的仓库吗?还有哪个更好地处理所有这些作为个人网站项目? GIT还是SVN?

我还必须在我们的Linux服务器上安装它,并为开发人员创建开发沙箱。相关人员也使用Windows和MAC。

我只是在寻找经验建议,以及如何在服务器上本地安装它们的指导性链接。

至于APPS,我相信TourtiousGIT / SVN在Windows上表现不错,而Tower和Versions在MAC上表现不错。

6 个答案:

答案 0 :(得分:5)

答案 1 :(得分:2)

我想说不要使用SVN,因为在我看来,DVCS进行分支和合并的能力几乎是必不可少的。从未使用过hg我会推荐git。要学习git,请在这里阅读前几章。

http://progit.org/book/

设置完成后,我只需为每个站点设置一个不同的repo,并使用带git的开发分支,并在准备启动时将其合并到master。有关使用git的工作流程,请查看gitflow以获取更多信息。

http://nvie.com/posts/a-successful-git-branching-model/

这是关于工作流的帖子,如果你想为git安装扩展,那里就有一个链接。还有一些关于使用它的视频教程。

如果你更像是一个视觉学习者,你也可以结识tekpub他们的git系列。

http://tekpub.com/productions/git

祝你好运。

答案 2 :(得分:2)

如果您所做的只是本地开发(即在您的网络中......而不仅仅是在一台机器上),那么SVN可能是最好的解决方案。即使您有一些分布式开发人员,如果他们只需连接到中央存储库并检查文件进出,那么SVN就是一个很好的工具。当然,SVN有它自己的怪癖和陷阱。

GIT增加了大量的复杂性,并且它具有非常高的学习曲线,因为它们倾向于重新定义comon工作流程甚至是常见vcs术语的含义。此外,GIT还为流程添加了额外的步骤(将本地存储库与服务器同步)。 SVN具有更成熟的IDE集成,工具工作更加顺畅。 TortoiseGIT还不是很成熟。

如果您决定稍后转移到GIT,有很多工具可以将SVN导入GIT,因此不会丢失任何工作。

GIT旨在允许许多不同的人独立工作,然后合并和同步他们的更改。如果您不需要,请使用SVN。

GIT与SVN相比具有许多优势,但SVN也具有优势。例如,SVN使用差异,而GIT使用快照。这意味着GIT存储库可以是更大的SVN存储库,其中包含相同的数据。基本上,GIT完全存储每个文件的副本,而SVN仅存储增量。将GIT中的一个更改为1MB文件,并存储另一个1MB文件。将SVN中的一个更改为1MB文件,然后仅存储更改(加上一些开销)。根据您存储的数据类型,这可能很重要。

答案 3 :(得分:0)

Svn vs. git很好地进入神圣的战争领域,因此非常偏离主题,更不用说经常重复了。不过,您的分支模型问题更适合客观答案。以下是一些一般性指导原则:

  • 网站之间常见的代码应从单个官方存储库中提取。如果您发现自己不在源代码管理之外传播相同的更改,例如在文件夹之间复制和粘贴文件,则说明设置不正确。
  • 理想情况下,为不同网站定制的代码应该是架构的,因此它位于与公共代码不同的目录中。这使得公共代码和自定义代码相当独立,这使您可以使用git子模块或svn部分检出来组装配置。
  • 如果由于历史原因无法分离体系结构,则可以为每个网站的自定义维护一个分支。但是,每当您对需要传播到所有站点的公共代码进行更改时,您必须手动解决的合并冲突风险要高得多。您还必须小心在哪个分支中进行常见的代码更改。请注意,合并冲突的可能性并不是放弃源控制分支的好借口。您的体系结构意味着无论如何都会发生冲突,因此您也可以让源代码控制帮助您完成合并。这样你只需要担心真正的冲突。

答案 4 :(得分:-1)

首先,AFAIK SVN是唯一允许您将所有网站存储在一个仓库中并有选择地单独检查它们的方法(参见稀疏检查)。 DVCS(通过它们的离线,全局本质)依赖整个回购存在。

接下来需要注意的是,Windows上的git支持不是大多数Windows用户所习惯的,而且我还是相信TortoiseGit并非100%准备好迎接黄金时段。 Mercurial可能是Windows DVCS的更好选择。

我认为您需要做的就是坐下来确定您的团队使用的工作流程 - 您做了多少合并,并行开发了多少,您的主仓库用作权威来源多少,离线多少如果你没有做过DVCS擅长的任何事情,那么SVN对你来说可能是更好的选择 - 更好的工具和更简单易懂的用法。如果你做了一些SVN不擅长的事情(离线工作,大量的重构),那么我可能会选择Mercurial。

答案 5 :(得分:-4)

Git是你最好的选择。您可能会有更多的学习曲线,但最终会提高效率。