【问题标题】:Is Mercurial Server a must for using Mercurial?Mercurial Server 是使用 Mercurial 的必备工具吗?
【发布时间】:2011-09-22 18:43:39
【问题描述】:

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

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

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

2) SSH 是必须的吗?还是取决于用户和服务器之间的连接方式?那么既然我们都在服务器中工作,那么不需要 SSH 对吧?

非常感谢,

【问题讨论】:

  • 我看到你已经选择了一个很好的答案,但我想花点时间来吐槽一下mercurial-server。它是一个完全不来自 Mercurial 项目的独立软件包。我永远不会知道它是如何以如此令人困惑的名称打包在主要发行版中的。如果您想要共享文件空间不可用的东西,文件系统就足够服务器和 sshd 或 Apache。

标签: linux mercurial ssh


【解决方案1】:

有两种东西可以称为“mercurial server”。

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

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

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

您可能想要使用的术语是“远程存储库”,而不是“mercurial 服务器”。该术语用于描述 push/pull/clone/incoming/outgoing/others-that-i'm-forgetting 命令的“其他存储库”(您没有从中执行命令的存储库)。远程存储库可以是同一磁盘上的另一个存储库,也可以是网络上的某个存储库。

【讨论】:

  • 谢谢 :) 但我想我的情况应该是第一种情况吧?所以也许我应该为类 Unix mercurial 使用安装?
【解决方案2】:

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

在最简单的情况下,这可以是一个简单文件共享上的存储库,其中可以进行文件锁定(NFS 或 SMB),每个开发人员都有写访问权限。在这种情况下,不需要在服务器上安装 mercurial,但有缺点:

  • 每个开发者都必须安装一个 mercurial 版本,它可以处理共享上的 repo 版本(例如,当共享上的 repo 使用 mercurial 1.9 创建时,使用 1.3 的开发人员无法访问此 repo)
  • 每个开发人员都可以对共享存储库发出破坏性操作,包括删除整个存储库。
  • 您无法在此类 repo 上可靠地运行挂钩,因为挂钩是在开发人员机器上执行的,而不是在服务器上

我建议使用 http 或 ssh 方法。为此,您需要在服务器上安装 mercurial(我没有考虑 http-static 方法,因为您无法推送到 http-static 路径),并获得以下优势:

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

http 和 ssh 之间的决定取决于您的本地网络环境。 http 具有绕过许多公司防火墙的优势,但是当您想通过 http 将内容推送回服务器(或不希望每个人都看到内容)时,您需要注意安全身份验证。另一方面,ssh 的缺点是您可能需要保护服务器,因此客户端无法在那里运行任意程序(这取决于您的客户端的可信度)。

【讨论】:

    【解决方案3】:

    我赞同 Rudi 的回答,即您应该使用 http 或 ssh 访问主存储库(我们在工作中使用 http)。

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

    基本的 Mercurial 软件确实提供了三种服务器模式:

    1. 使用hg serve;这服务于单个存储库,我认为它更用于快速破解(例如,当主服务器关闭时,您需要从同事那里提取一些更改)。
    2. 使用hgwebdir.cgi;这是一个 cgi 脚本,可以与 Apache 等 HTTP 服务器一起使用;它可以为多个存储库提供服务。
    3. 使用 ssh(安全外壳)访问;我对此了解不多,但我相信它比 hgwebdir 变体更难设置

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 2011-01-30
      相关资源
      最近更新 更多