Mercurial Server是否必须使用Mercurial?

Cas*_*sie 5 linux ssh mercurial

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

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

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

2)SSH必须吗?或者它取决于用户和服务器之间的连接类型?因为我们都在服务器上工作,所以不需要SSH吗?

非常感谢你,

jke*_*ian 8

有两件事可以称为"mercurial服务器".

一个是社交约定,"共享驱动器上的存储库X是我们的公共存储库".您可以安全地推送和拉到该已安装的存储库,并将其用作开发的常用"主干".

第二种可能是允许mercurial远程连接的特定软件.有很多选项可供您自己设置,以及其他远程主机的选项.

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

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


Rud*_*udi 5

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

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

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

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

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

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