Как заставить клиентов Mercurial использовать определенную версию Mercurial? - PullRequest
0 голосов
/ 23 августа 2011

По мере выпуска новых версий 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 улучшил обработку кейсов, у него все еще есть ситуации, когда могут возникать проблемы с фальсификацией кейсов. Поскольку в новых версиях сделаны улучшения обработки обращений, мы хотим каким-то образом принудить наших пользователей использовать эти версии , чтобы не возникало новых проблем, которые нам приходится тратить на исправление.

Ответы [ 2 ]

2 голосов
/ 23 августа 2011

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

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

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

0 голосов
/ 23 августа 2011

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

...