2011-08-23 94 views
0

随着新版本Mercurial的发布,我们希望以某种方式强制开发人员,设计人员和其他人使用Mercurial的已批准(或更高版本)版本。例如,我们目前使用的是1.8.3版本,我希望能够自动阻止/拒绝用户在1.8.3之前使用任何东西访问我们的存储库,并允许任何后续的版本。 我可以用钩子做这个吗?如何强制Mercurial客户端使用特定版本的Mercurial?

我们在Windows和IIS上运行我们的服务器。我想写一个IIS扩展,它为不是正确版本的客户端返回了500个错误,但客户端不会在其HTTP请求中发送任何版本信息,只是“mercurial/proto 1.0”,我假设它意味着Mercurial的1.0版本HTTP协议。

是我想要的吗?有没有其他方法可以解决这个问题?

我们想这样做,因为Mercurial区分大小写。我们在不区分大小写的Windows上100%。这导致我们无数案件折叠冲突。我们浪费他们的时间。虽然Mercurial已经改进了对案件的处理,但它仍然存在可以引入案例折叠问题的情况。 由于在新版本中进行了案例处理改进,因此我们希望能够强制我们的用户使用这些版本,所以我们不需要花时间修复新问题。

+0

iirc有一些扩展来帮助进行案例折叠吗? –

回答

2

您是否有强烈的理由要执行此操作? Mercurial具有内部机制,可以自行处理版本特性:如果您使用1.8.3版本创建了一个存储库,该存储库使用的功能在1.6中尚不存在,那么1.6客户端将拒绝与这样的存储库进行交互。换句话说,mercurial本身拒绝访问,但不是基于版本号,而是基于实际功能。这样,如果新版本不以任何方式破坏兼容性,那么可以将两个版本并排使用,而不会出现任何问题。

从内部看,这是可行的,因为mercurial会向资源库的元信息添加所需要素的列表,并在尝试对其执行任何操作之前检查此列表。如果列表包含mercurial不知道(尚)的功能,则认为它不能与其进行有意义的交互并拒绝合作。

因此,IMO最好的做法是简单地制定一项政策,要求开发人员使用最新版本,但不要添加其他技术措施。如果有人试图推出一个真的太旧的版本,那么他们会收到一条错误消息,如果他们抱怨,你可以简单地指出他们的官方政策。

+0

我已更新我的问题,以包含我们希望获得此功能的动机。 –

+0

我看到...嗯,Windows比较不区分大小写,但它确实存储大小写。也许有一种方法可以防止第一个地方的情况冲突,在mercurial之外? – tdammers

0

如果您在Windows上,那么如何使用域策略以某种方式部署Mercurial安装程序?

相关问题