0

随着新版本 Mercurial 的发布,我们希望以某种方式强制开发人员、设计师和其他人使用已批准(或更高版本)的 Mercurial 版本。例如,我们目前使用的是 1.8.3 版本,我希望以某种方式自动阻止/拒绝用户使用 1.8.3 之前的任何内容访问我们的存储库,并允许之后的任何版本。 我可以这样做吗?

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

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

我们想要这样做是因为Mercurial 区分大小写。我们 100% 使用不区分大小写的 Windows。这导致了我们无数的案例折叠冲突。 我们在他们身上浪费了几个小时。尽管 Mercurial 改进了案件处理,但仍有可能引入案件折叠问题的情况。 由于在新版本中对案例处理进行了改进,我们希望以某种方式强制我们的用户使用这些版本,这样就不会引入我们必须花时间修复的新问题。

4

2 回答 2

2

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

在内部,这是可行的,因为 mercurial 将所需功能的列表添加到存储库的元信息中,并在尝试对其进行任何操作之前检查此列表。如果列表包含 mercurial 不知道的功能(还),它会得出结论,它无法与它进行有意义的交互并拒绝合作。

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

于 2011-08-23T19:38:30.097 回答
0

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

于 2011-08-23T19:56:39.890 回答