О Mercurial (грустно)
От: itslave СССР  
Дата: 09.01.12 18:18
Оценка: 6 (2) :))
В общим и целом, начитавшись про то какие хорошие распределенные системы контроля версий и поигравшись тестовыми проектами, я решил перевести рабочий проект со старого проверенного svn на что нить новомодное.
Выбирал между git и hg, выбрал последнего(и ногу прострелить себе сложней, и пишут что под винду интегрируется на ура). В качестве клиента — традиционно черепаха.
Конфигурационные требования у меня самые простые:

Пишут что все хорошо можно настроить и все будет работать. Дал задачу админу. Прошло пару недель, админ ничего внятного не ответил — "разбираюсь"
Ну думаю, ет не совсем его профиль, подергаю я это хозяйство на новогодних праздниках.
обложился гуглем, бубном и кофе, начал священнодействовать. Можы у меня руки кривые и часть проблем можно решить, ткните меня фейсом лица плз — буду премного благодарен.
С самого начала смутил тот факт что официальная дока немногословна(про иис вообще ничего)

Весьма сильно меня смутил факт наличия собственного встроенного(sic!) веб-сервиса, конфигурируемого "в лоб" — zero security. Ну думаю, ладно фиг с вами нехай себе будет, в интранете дырки вроди уже позатыкивали, а между собой девы все равно сорцы шарят всеми возможными способами. Но для центрального репозитария это решение не подходило — никакой интеграции с AD да и вообще ни с чем.
Ну думаю scm-manager(тулзень такая есть) мне поможет. Увы не помог — опять таки, он сам по себе, никуда не интегрируется.
По итогу остались апач и иис. С апачем я знаком не шибко, выбрал IIS.
Как показало гугление, разные версии hg ведут себя несколько по разному, но думаю фиг с ним прорвемся.

Пару часов пошло на установление кошерного питона(ога, версии несовместимы, а дистрибутив рекомендуемой доступен тока в виде сорцов. Ну да ладно, прорвались.
Ышо пару часов приседаний и включился ssl. Ах ну да, самоподписанные сертификаты по дефолту не принимаются ни в каком виде — надо конфиги на всех девелоперских компах дописывать вручную. Супер.
Потом оказалось что во всех доках рекомендуют ставить x86 сборки hg(но после еще пары приседаний, поставились и x64). Необходимость пошагово ставить 3-4 дистрибутива(необходимость в некоторых проявляется просле гугления сообщений об ошибках), затем чего-то куда-то распаковывать и докопировать вручную... ну скажым прямо, не радует.

AD-аутентификация прикрутилась на удивление легко и непринужденно(новерное потому что ет полностью на совести IIS-a). А вот авторизация... ну официальное решение: назначить права чтения-записи на папку репозитария только нужным AD-пользователям. Класс. Все остальные пройдут аутентификацию и получат замечательное сообщение об ошибке 404 Not found — просто очень информативно. Я спустился в киоск купить пива, чтобы вернуться в рабочее состояние.

Решение положить файл mercurial.ini в каталог текущего пользователя тоже порадовало своей легкостью и непринужденностью(ет они сделали чтобы с UAC-ом не конфликтовать, супер!).

Затем был импорт исходников из svn. В общим давным давно чья то светлая голова в нашем тиме положила 3d-party дистрибутивы в svn(2 файла по 300 метров). Вот тут уж я наприседался. Полчал несколько раз out of memory(и на 86 и 64 разрядных сборках, с екстеншном largefiles и без него....) но в конце концов заимпортил через x64 черепаший hg(наверное там сборка более кошерная). Сначала без екстешна largefiles. Все хорошо, но при клонировании репозитария получал исключения что с потоком что-то не так. И все. Со включенным расширением largefiles переимпортил, но пришлось включать аналогичное расширение с аналогичными параметрами на всех девовских компах. Заняло это все не один час времени, но то уже такое, понять можно. В общим неужто нельзя эвристически отделить текстовый файл от бинарного и соотвсетвенно все бинарные по дефолту считать large????? Ужас и мрак!

После этого казалось бы уже можно было выдохнуть. Интеграция с JIRA удалась. "Родной" плугин не заработал, я так и не понял почему, а вот через FishEye все поднялось.


Пару приятных слов про черепаходевов. Во первых опять таки самоподписанные сертификаты: в диалоге pull есть галочка "принимать все сертификаты", в диалоге push — нету. Неужто трудно было скопировать поведение svn-черепахи(вопрос принимать всегда-принять только сейчас-не принимать)? Во вторых наверное кеширование логина-пароля к серверам, к которым обращаемся с pull-push это наверное осень сложная задача? Если кеширование пароля можно оправдать недостаточной секурностью(хотя в 90% случаев достаточно просто закодировать его), то почему нельзя логин то сохранить??? Ет жыж очевидно прям сразу, набивание логина-пароля задалбывает после 3го раза! В третьих дока в кошмарном состоянии: ее никто не обновляет, многие текстови и скриншоты относятся к версия, канувшим в лету год назад.

Ну и на закуску то что меня просто убило. Достаточно в mercurial.config на своей машине написать

[ui]
username = serega.brin

затем поломать весь код, залить его на центральный репозитарий, аутентифицировавшись как vasya.pupkin и.... вуаля!
Автор изменений, поломавших все — Серега Брин а не Вася Пупкин! Замечательно! Секурно и безопасно! Все по ssl и никаких самоподписанных сертификатов!
В общим резюме: для коммерческой корпоративной разработки hg сырой ни разу не годен, т.к. не выдерживает ни малейших требований по безопасности в первую очередь, по интеграции, легкости настройки, умению работать с бинарниками, — во вторую. Зато валом свистелок-перделок по типу собственного веб-сервиса, и всяких синтаксических сахаров по типу команды forget.
Вот подумываю свалить обратно на SVN(в первую очередь из-за полного произвола в авторстве ченджсетов). Неделя приседаний коту под хвост. У git-а говорят все еще печальней с точки зрения настройки-интеграции. Про bazaar даже не вспоминаю.
В общим вот, полегчало
Если у меня кривые руки — буду рад конструктивной критике.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.