Как заставить клиентов Mercurial использовать определенную версию Mercurial?

По мере выпуска новых версий Mercurial мы хотим как-то обеспечить, чтобы разработчики, дизайнеры и другие лица использовали утвержденную (или более позднюю) версию Mercurial. Например, в настоящее время мы используем версию 1.8.3. Я хотел бы каким-то образом автоматически предотвращать/запрещать пользователям доступ к нашим репозиториям, используя что-либо до 1.8.3, и разрешать любую версию после. Могу ли я сделать это в хуке?

Мы запускаем наш сервер на Windows и IIS. Я подумал о написании расширения IIS, которое возвращало 500 ошибок для клиентов не в нужной версии, но клиент не отправляет никакой информации о версии в своих HTTP-запросах, только «mercurial/proto 1.0», что, как я предполагаю, означает версию 1.0 Mercurial. HTTP-протокол.

Возможно ли то, что я хочу? Есть ли другие способы решить это?

Мы хотим сделать это, потому что Mercurial чувствителен к регистру. Мы на 100% используем регистронезависимую систему Windows. Это приводит к многочисленным коллизиям при складывании дел. Мы тратим на них часы. Несмотря на то, что Mercurial улучшил обработку регистра, в нем по-прежнему возникают ситуации, когда могут возникать проблемы со складыванием регистра. Поскольку в новых версиях вносятся улучшения в обработку запросов, мы хотим каким-то образом заставить наших пользователей использовать эти версии, чтобы не возникало новых проблем, на исправление которых нам приходится тратить время.


person Aaron Jensen    schedule 23.08.2011    source источник
comment
iirc есть некоторые расширения, помогающие складывать регистр?   -  person jk.    schedule 24.08.2011


Ответы (2)


Есть ли у вас веские причины для того, чтобы добиться этого? Mercurial имеет внутренние механизмы, которые сами заботятся о функциях версии: если вы создаете репозиторий с 1.8.3, который использует функции, которых еще нет, скажем, в 1.6, то клиент 1.6 откажется взаимодействовать с таким репозиторием. Другими словами, сам mercurial отказывает в доступе, но не на основании номера версии, а на основе фактических функций. Таким образом, если новая версия никоим образом не нарушает совместимость, вы можете без проблем использовать обе версии вместе друг с другом.

Внутри это работает, потому что mercurial добавляет список необходимых функций в метаинформацию репозитория и проверяет этот список, прежде чем пытаться что-либо с ним сделать. Если список содержит функцию, о которой mercurial не знает (пока), он делает вывод, что не может осмысленно взаимодействовать с ней, и отказывается сотрудничать.

Поэтому, по мнению ИМО, лучше всего было бы просто установить политику, требующую от разработчиков использовать актуальную версию, но не добавлять дополнительные технические меры. Если кто-то попытается нажать версию, которая действительно слишком старая, он получит сообщение об ошибке, и если он пожалуется, вы можете просто указать ему на официальную политику.

person tdammers    schedule 23.08.2011
comment
Я обновил свой вопрос, чтобы включить нашу мотивацию для этой функции. - person Aaron Jensen; 23.08.2011
comment
Ясно... ну, Windows сравнивает регистр без учета регистра, но сохраняет регистр. Может быть, есть способ предотвратить конфликты случаев в первую очередь, помимо mercurial? - person tdammers; 24.08.2011

Если вы работаете в Windows, как насчет развертывания установщика Mercurial с использованием доменных политик?

person Macke    schedule 23.08.2011