Pull to refresh

Comments 36

Все верно, кроме
>Разархивировать в эту папку файл library.zip из каталога, в который установлен Mercurial (по умолчанию C:\Program Files\Mercurial\library.zip);
>Оттуда же скопировать папку Templates (по умолчанию C:\Program Files\Mercurial\Templates);
>И напоследок скопировать в эту директорию файл hgweb.cgi.
Сами разработчики меркуриала говорят, что такая конфигурация не поддерживается.
Лучше сделать так:
1) установить питон, x86 даже для винды x64
2) установить меркуриал, как модуль питона mercurial.selenic.com/release/windows/mercurial-1.8.3.win32-py2.6.exe
3) положить один только hgweb.cgi в папку C:\Inetpub\hg
* в качестве бонуса уходят проблемы с совместимостью, при обновлении меркуриала
Сами разработчики меркуриала говорят, что такая конфигурация не поддерживается.
Можете направить туда, где об этом можно почитать? Это же гораздо проще получается.
+1 к установке меркуриала в качестве модуля для питона. Изначально довольно много времени потратил на эксперименты с различными версиями library.zip, но ни с одной из них у меня так и не заработало.
В остальном все сделал примерно аналогично описанному в статье, только для «красивых url» использовал Ionics Isapi Rewrite Filter. Плюс еще настроил аутентификацию через Active Directory — в связи с ней рекомендую расширение для меркуриала KeyringExtension, чтобы не хранить пароль в открытом виде (ну или не вводить его постоянно).
Есть такая штука как rhodecode, но она очень медленная даже не на больших репозиториях. :(
Вы её тестировали? В чем медлительность? Демка у них на сайте работает довольно неплохо.
Да, тестировал. Медлительность заключается в том, что если залить проект с большим количеством коммитов, то последние просматриваются достаточно быстро, а самые первые открываются оооочень долго.

Но в принципе попробуйте, если бы не тормоза, то это очень хорошая штука. Может быть я что-то в настройках упустил, хотя помучался порядочно.
Максимум я заливал проект с 300 коммитов. На самом деле это не очень то и много, но для меня значительно. :)
Давно ли это было? Какую версию тестировали? Может уже поправили.
Версию не помню, но тестировал самую свежую месяца три назад.
Права доступа через IIS раздавать на репозитарии?
Как-то не понадобилось. Все заработало как есть.
Нет. Вы не поняли. Я про то, что бы кто угодно не смотрел исходники и свои коммиты туда не сдал.

В команде 3 программиста. Банально можно защитить через Windows Auth в настройках IIS + в IIS Role manager добавить три учетных записи из AD.

Я правильный путь выбрал?
Да, у меня тоже вопрос про права есть.

1) Допустим есть реп на сервере ServerRep.
2) Я делаю его клон себе на комп, делаю комиты в локальный реп от имени пользователя ivan.
3) В это время мой коллега сделал клон того же репа себе на комп и комитит туда с тем же именем пользователя.
4) После мы вдвоём делаем push в серверный реп ServerRep (предварительно сделав pull, конечно).

Вопрос: когда мы просматриваемым историю коммитов в ServerRep, как отличить двух ivan`ов?
Насколько я знаю, никак. Потому что имя пользователя задается в текстовом фомате в файле hgrc. По справке mercurial имя пользователя желательно дополнить адресом почты (ivan <ivan@opa.ru>). Тогда можно будет различить двух Иванов.
Меня смущает немного, что пользователь сам себе может имя сменить, под которым будет коммитить в общий реп.
Можно сделать так:

[web]
style = monoblue
allow_push = ivan, den, olga
push_ssl = false

Это дает право публиковать изменения только трем людям с определенными никами. Тогда уже просто так ник не сменишь, только на чужой (:

А вообще в этом случае лучше настроить увязку с AD.
Ну напиши хук, который будет ругаться и запрещать.

Проблема-то в том, что коммититься как раз пользователь будет в локальный реп, а не общий, и фиг ты ему что запретишь (и это правильно). А вот при пуше в общий уже поздно что-либо менять.
Можно по авторизации на сервер делать апдейт автора комитов.
Хук писать нет времени и желания, если есть готовое решение с удовольствием послушаю о нём.
Эээ… Как вы хотите менять автора коммитов? Вы же ченджсет поломаете. У них, как минимум, суммы разными будут после этого (у моего коммита и у него же, только на сервере).
Человек авторизовался на сервере, как он авторизовался, так и комиты его называются.
Криво конечно, и не всегда правильно отработает, но это вариант костыля.
Снова я чего-то не понял. username — это информация, которая прямо в коммите пишется. И после того, как вы сформировали коммит — вам её уже не поменять. Более того, авторизация нужна в том числе для того, чтоб только вы (к примеру — Линус Торвальдс) имели право пушать в главный репозиторий некоторые коммиты (ченджсеты, сделанные другими людьми) после того, как просмотрели их.

Потому не парьтесь, а просто аккуратно пишите username, и не давайте доступ кому попало.
«Потому не парьтесь, а просто аккуратно пишите username, и не давайте доступ кому попало. „
Согласен, похоже в моём случае это единственный верный вариант. Ну или использовать по-старинке svn =)
За это я не вникал, т.к. не нужно было. Но если вам нужна увязка с AD, советую посмотреть вот эту статью (из раздела «Ссылки»). Там правдв оговорка, что нужно TurtoseHg устанавливать.
Еще нюанс,
>создавать для репозиториев каталоги и прописывать их в hgweb.config
Решается очень просто, делаете отдельную папку для репозиториев, и складываете их все туда. Добавляете в hgweb.config строку типа

[collections]
d:/Team/Mercurial/Repos = d:/Team/Mercurial/Repos

После этого они автоматом у вас появятся в веб-морде.
Насчет

Попробуйте
[web]
baseurl = /hg
За [collections] спасибо. Дополню. Я это даже не пробовал, потому что где-то прочитал, что на win эта опция не работает.

Попробуйте
[web]
baseurl = /hg

Это помогает со стилями, но тогда я не могу попасть на главную страницу с списком репозиториев. 404 ошибка… Хотя репозитории смотреть могу.
Интересно, а можно было бы завести mercurial-server…

Он реально намного удобнее чем голый hgweb
Ох, яростно плюсую. Завтра же поиграюсь на рабочем сервере :-)
Я тоже на завтра отложил (: Сегодня демку их гоняю и обдумываю.
У меня просто на сегодня рабочий день кончился уже. GMT+11 ;-)
Для начала посмотрите rhodecode. Сам его сейчас смотрю.
Очень интересно! Расскажите поподробнее, пожалуйста? HgSharp — это .net реализация mercurial? А демо HgLab есть?
Да, HgSharp — это Mercurial Core на .NET. Реализована пока далеко не вся функциональность, но даже того что есть уже хватает для того, чтобы HgLab умел делать push, pull, браузить по репозиториям и делать базовые проверки в ACL.

Демо — http://live.hglabhq.com/
Sign up to leave a comment.

Articles