Mercurial "сервер" - PullRequest
       32

Mercurial "сервер"

73 голосов
/ 11 апреля 2009

Я уже некоторое время пользуюсь Mercurial, но в основном для собственного использования. Теперь у меня есть проект, над которым я работаю, где двое из нас строят один и тот же проект, и мы, вероятно, будем изменять файлы друг друга.

Я бы хотел установить репозиторий Mercurial на сервере, сделать этот репозиторий «сервером», чтобы мои изменения и изменения в другом редакторе были перенесены на этот сервер (так что в основном Subversion / CVS модель); Мне нравится Mercurial, и я не хочу переключаться на что-то вроде Subversion.

Здесь, в моей собственной сети, все делается в Linux, и на моем "сервере" установлено OpenSSH . Поэтому перенести мои изменения (я работаю на нескольких компьютерах) с одного компьютера на сервер - это просто вопрос «hg push»; протокол используется SSH для передачи изменений.

Проблема в том, что я использую Linux, сервером будет Windows (значит, нет OpenSSH, верно?), А другой редактор тоже будет использовать Windows. Насколько я знаю, лучший способ работы в Mercurial в этих типах установок заключается в том, чтобы репозиторий извлекал изменения из источника, а не из источника, отправляющего «серверу». Я нахожусь за несколькими брандмауэрами (не полностью моей сетью), и мой компьютер не будет виден с сервера, и я предполагаю, что другой редактор будет также за брандмауэром (поэтому мы не можем просто запустить локальный Mercurial HTTP-сервер и получить "сервер" компьютер, чтобы вытащить из этого).

Какой лучший способ для обоих редакторов получить наши изменения в хранилище сервера? (Я должен добавить, что сервер - это сервер в Интернете, поэтому он так же виден, как и google.com. Это сервер Windows, размещенный на хосте, но, возможно, у меня будет разрешение на установку программного обеспечения, если это необходимо.)

Ответы [ 13 ]

49 голосов
/ 11 апреля 2009

Я считаю, что чтение документации проекта - хорошее начало: https://www.mercurial -scm.org / wiki / PublishingRepositories .

19 голосов
/ 22 мая 2009

Это также может упростить администрирование для аутсорсинга - если у вас есть только один репозиторий и пара парней, толкающих / вытягивающих его, вы можете сделать намного хуже, чем просто разместить его где-то вроде Bitbucket . (И для решения с одним репозиторием это фактически бесплатно.)

16 голосов
/ 27 октября 2011

Взгляните на rhodecode , это сервер Mercurial с открытым исходным кодом со многими функциями, которые Kiln предлагает, включая поиск кода. Он даже прекрасно интегрируется с LDAP, поэтому вы можете аутентифицировать пользователей HG с вашим доменом Windows.

14 голосов
/ 31 мая 2010

Рекомендую разместить ваш проект на http://bitbucket.org/, на хостинге Mercurial. Если вы не хотите, чтобы источник был виден другим, у них есть настройки для создания частных репозиториев. Я думаю, что вам разрешено иметь один закрытый репозиторий, прежде чем они начнут взимать с вас плату.

Редактировать: Bitbucket теперь предоставляет неограниченное количество частных / скрытых репозиториев.

12 голосов
/ 31 мая 2010

Я предлагаю Kiln с www.fogbugz.com. Это коммерческое решение для управления исходным кодом, в основном оболочка Windows с Mercurial под капотом.

8 голосов
/ 14 апреля 2009

Конечно, для Windows доступно много SSH-серверов. Вот два примера:

Ознакомьтесь с примерами Putty в книге Mercurial: полное руководство для подключения пользователей Windows.

6 голосов
/ 03 февраля 2011

Вы можете использовать SCM-Manager , чтобы поделиться своими репозиториями через http или https.

5 голосов
/ 11 апреля 2009

Mercurial и PuTTY - хорошо поддерживаемое и хорошо документированное решение.

3 голосов
/ 19 февраля 2010

Самое простое решение - использовать общие папки Samba, особенно в среде только для Windows. Я только что настроил, кажется, работает.

2 голосов
/ 09 декабря 2011

Наша настройка: сервер Windws + Apache + Mercurial

Часть нашего http.conf

<Location /hg>

    DirectoryIndex hgweb.cgi #from mercurial source, put it in htdocs/hg
    AddHandler cgi-script .cgi
    Options ExecCGI
    Options +FollowSymLinks
        Order deny,allow
        Deny from all
        <Limit GET POST>
            Allow from 127.0.0.1 10.1.2 
        </Limit>   

    AuthUserFile D:/hg/htpasswd
    AuthGroupFile D:/hg/hggroups
    AuthType Basic
    AuthName "Mercurial xxxx repositories"

    Require group admin somegroup

    RewriteBase /hg
    RewriteRule ^$ hgweb.cgi  [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*) hgweb.cgi/$1  [QSA,L]  
</Location>

<Location /hg/project1>    
    Require group somegroup admin
</Location>
<Location /hg/project2>    
    Require group somegroup admin
</Location>
<Location /hg/test>    
    Require valid-user
</Location>

Есть и другие файлы для настройки, такие как hgweb.conf / htpasswd / hggroups, но они являются легкой частью.

Работает довольно хорошо. Если какой-либо пользователь захочет сменить пароль, я попрошу его перейти в онлайн-генератор htpasswd, чтобы сгенерировать для меня последовательность htpasswd, я помещу ее в файл htpasswd.

Я думаю, что наши настройки очень похожи на то, что делает VisualSvn Server. (конечно, значительно упрощенная версия)

...