2011-09-22 54 views
5

我正尝试为我们的团队选择一款版本控制软件,但我之前没有太多经验。搜索和谷歌搜索后,似乎Mercurial是一个很好的尝试。不过,我对于关于它的一些一般信息有点困惑。基本上,我们的团队只有5个人,我们都连接到将用于存储存储库的服务器机器。该服务器是一个Redhat Linux系统。我们可能会使用大量的中央工作流程。因为我喜欢本地提交的想法,所以我更喜欢DVCS类软件。现在我正在尝试安装mercurial。这是我的问题。Mercurial Server是否必须使用Mercurial?

1)用于存储库的服务器是否总是需要安装软件“mercurial-server”?或者它取决于它使用的工作流程类型?换句话说,如果没有用于工作的集中式工作流程,那么服务器可以通过“mercurial client”安装吗?

我对“mercurial-server”这个词感到困惑。或者这意味着安装在服务器上的mercurial总是被称为“mercurial服务器”,如果它是集中式的,它确实很重要。另外,因为我们都在该服务器上工作,这是否意味着只需要安装一个mercurial副本?我们都有我们自己的用户目录,例如/ home/Cassie,/ home/John,...和/ home/Joe。

2)SSH是必须的吗?或者它取决于用户和服务器之间的什么样的连接?所以,因为我们都在服务器上工作,SSH不是正确的吗?

非常感谢你,

+2

我看到你已经选择了一个很好的答案,但我想花一秒钟来咆哮'mercurial-server'。这是一个独立的软件包,完全不是来自Mercurial项目。它如何在主要的发行版中打包,带有这样一个令人困惑的名字,我永远不会知道。如果你想要共享文件空间不可用的情况,文件系统足够服务器,并且可以使用sshd或Apache。 –

回答

8

有两件事情可以被称为“善变服务器”。

其中一个简单的社会约定是“共享驱动器上的存储库X是我们的公共存储库”。您可以安全地推送到该挂载的存储库,并将其用作您的开发的通用“主干”。

第二个可能是允许mercurial远程连接的特定软件。有many options自己设置,以及其他remote hosting选项。

查看不同连接选项列表的第一个链接。但作为#2的具体答案:不,您不需要使用SSH,但如果您处于使用它的环境中,这通常是最简单的选择。

您可能想要使用的术语,而不是“mercurial server”,是“远程存储库”。这个术语用于描述推送/拉取/克隆/传入/传出/别人 - 这是我忘记命令的“其他存储库”(您不执行命令的那个存储库)。远程存储库可以是同一磁盘上的另一个存储库,也可以是网络上的某个存储库。

+0

谢谢:)但我想我的情况应该是第一个案件吧?那么也许我应该使用安装类Unix的mercurial? – Cassie

4

通常,您使用一个共享存储库来共享不同开发人员之间的代码。虽然技术上不需要它,但它有一个优点,即在新软件有一个点时,它更容易同步。

在最简单的情况下,它可以是一个简单文件共享的存储库,可以进行文件锁定(NFS或SMB),每个开发人员都有写入权限。在这种情况下,没有必要有水银安装在服务器上,但也有缺点:

  • 每个开发人员都必须安装一个善变的版本,它可以处理共享上的回购版本(作为一个例子时,股票的回购利用mercurial 1.9创建,开发人员拥有1。3无法访问此回购)
  • 每个开发人员都可以对共享回购进行破坏性操作,包括删除整个回购。
  • 不能可靠地对这样的回购运行挂钩,由于挂钩的开发机器上执行,而不是在服务器上

我建议使用HTTP或ssh方法。你需要在服务器上安装mercurial for this(我没有考虑http-static方法,因为你无法进入http-static路径),并获得以下优点:

  • 服务器上的mercurial版本不需要与客户端相同,因为mercurial使用独立于版本的有线协议
  • 您不能通过这些协议执行破坏性操作(您只能将新修订添加到远程回购,但从不删除其中的任何一个)

http和ssh之间的决定取决于你本地的网络环境。 http有一个好处,它可以绕过许多公司的防火墙,但是当你想通过http推送东西回到服务器(或者不希望每个人都看到内容)时,你需要关心安全认证。另一方面,ssh的缺点是可能需要保护服务器,以便客户端不能在那里运行任意程序(这取决于客户端的可信度)。

2

我第二个Rudi的答案是你应该使用http或ssh访问主存储库(我们在工作中使用http)。

我想解决你关于“mercurial-server”的问题。

基本水银软件确实提供了三台服务器模式:

  1. 使用hg serve;这服务于一个存储库,并且我认为它更多地用于快速入侵(例如,当主服务器关闭时,例如,您需要从同事那里进行一些更改)。
  2. 使用hgwebdir.cgi;这是一个CGI脚本,可以与HTTP服务器(如Apache)一起使用;它可以服务多个存储库。
  3. 使用ssh(Secure Shell)访问;我对此不太了解,但我认为设置比hgwebdir变种更困难

另外还有一个名为“mercurial-server”的软件包。这是由另一家公司提供的;其主页是http://www.lshift.net/mercurial-server.html。据我所知,这是选项3的管理界面,即mercurial ssh服务器。

所以,不,你不需要安装mercurial服务器; mercurial包已经提供了一个服务器。