Ртутний “сервер”


74

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

Я хотів би налаштувати Mercurial сховище на сервері, зробити це сховище «сервером», щоб мої зміни та зміни іншого редактора надходили на цей сервер (так, в основному модель Subversion / CVS ); Мені подобається Mercurial, і я не хочу переходити на щось на зразок Subversion.

Тут у моїй власній мережі все робиться на Linux, і на моєму «сервері» встановлений OpenSSH . Отже, переміщення моїх змін (я працюю на декількох комп’ютерах) з одного комп’ютера на сервер - це лише питання «hg push»; використовується протокол SSH для передачі змін.

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

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


Я ще не знайшов рішення, хоча я теж не так старався.
user85116

1
Дивіться hglabhq.com . Зараз це в альфа-версії, але ви можете отримати дочасний доступ, якщо дійсно хочете перевірити ситуацію.
Антон Гоголєв

Відповіді:


11

Я пропоную Kiln з www.fogbugz.com . Це комерційне рішення для управління джерелами, в основному обгортка Windows з Mercurial під капотом.

Оновлення 2020-10-24

11 років тому Mercurial міг бути життєздатним рішенням, але не більше: Git просто працює.


Будь ласка, перегляньте мої коментарі до mizipzor та Alistair Bell.
user85116

2
Я боюся, що ви не розумієте, що пропонує піч від Fogcreek. Kiln не є хостинговою службою - чесно кажучи, ви можете використовувати хостинг-сервіс, який надає FogCreek, якщо хочете, але Kiln - це серверне програмне забезпечення, що встановлюється автоматично. (Усі делікатні деталі ціноутворення обговорюються на цій сторінці - fogcreek.com/Kiln/Details.html#forYourServer )
Роланд Тепп,

2
Я пропоную вам не розуміти, що передбачає піч від Fogcreek. Я придбав і встановив Kiln на нашому сервері Amazon EC2, і він працює зараз добре. Це просто дуже гарна обгортка навколо Mercurial.
Контанго,

1
Ви праві, не підозрювали, що піч може бути встановлена ​​на моєму власному сервері. Дякую за підказку.
user85116

5
Перевірте rhodecode.org на своєму ртутному сервері з відкритим кодом з багатьма функціями, які має піч (хоча і не всі).
Ларс Такманн,


19

Це також може спростити адміністрування, щоб передавати його на аутсорсинг - якщо у вас є лише одне сховище і пара хлопців, які його штовхають / тягнуть, ви можете зробити набагато гірше, ніж просто розмістити його десь, як Bitbucket . (А для рішення з одним сховищем це насправді безкоштовно.)

Оновлення: Зараз 2020 рік, і Bitbucket більше не підтримує ртутний, див .: https://bitbucket.org/blog/sunsetting-mercurial-support-in-bitbucket

Перелік розміщених або влаштованих безкоштовних або платних рішень див. На https://www.mercurial-scm.org/wiki/MercurialHosting


16
Звичайно. BitBucket має концепцію приватних репо, які решта світу не може бачити (вони навіть не бачать, що вони там). Якщо ви достатньо параноїчні, що розміщення коду на машині комусь іншому є проблемою, досить справедливо; але для всіх інших це цілком здійсненно.
Алістер Белл

6
@TJ, не якщо ти поясниш, скільки свого часу ти витратиш на те, щоб керувати власним центральним репо.
Кріс Стюарт,

16

Погляньте на rhodecode - це Mercurial-сервер із відкритим кодом, який пропонує багато функцій, які пропонує Kiln , включаючи пошук коду. Він навіть чудово інтегрується з LDAP, тому ви можете автентифікувати користувачів HG у своєму домені Windows.


Я подивився на це. Це гарна система. Вам потрібно розібратися з запуском програми на пітоні, але це не було важко. Я не міг уявити, як запустити його як службу Windows, хоча
Джеймс Л

Існує версія Rhodecode з відкритим кодом. Зараз він називається Каллітея. pythonhosted.org/Kallithea
justengel

RhodeCode (та інші проекти компанії) насправді є відкритим кодом. Будь ласка, перевірте code.rhodecode.com, щоб отримати повний список. У серії 4.X RhodeCode є багато додаткових функціональних можливостей, які також не знаходяться в Каллітеї, такі як виділення синтаксису різниць, злиття запитів на виклик, огляд розумного коду тощо ...
marcinkuzminski

14

Оновлення: Зараз 2020 рік, і Bitbucket більше не підтримує ртутний, див .: https://bitbucket.org/blog/sunsetting-mercurial-support-in-bitbucket

Перелік розміщених або влаштованих безкоштовних або платних рішень див. На https://www.mercurial-scm.org/wiki/MercurialHosting

Я рекомендую розмістити свій проект на http://bitbucket.org/ , веб-сайті розміщення сховищ Mercurial.

Якщо ви не хочете, щоб джерело бачили інші, вони мають налаштування для створення приватних сховищ. Я думаю, вам дозволено одне приватне сховище, перш ніж вони почнуть за вас стягувати плату.

Редагувати: Bitbucket тепер надає необмежену кількість приватних / прихованих сховищ.


23
Думаю, ви не розумієте практики комерційного розвитку; немає жодного способу, що вихідний код цієї компанії буде розміщений на чужому сервері, незалежно від того, які "приватні" сховища існують. Це просто не варіант.
user85116

6
Комерція не означає невігластва.
Кріс Стюарт,

11
@Chris: різні компанії мають різний рівень параної, і це нормально. Якщо 85116 не зможе переконати свою компанію передати ці матеріали на аутсорсинг BitBucket або Fog Creek (хтось, хтось ні), найкращим варіантом буде, можливо, придбати копію Kiln, яку він може запускати локально. Особисто я б віддав на аутсорсинг, але у багатьох компаніях це надто жорстко політично.
Алістер Белл

18
Ого, говорячи про незнання ... деякі з вас просто не розуміють. Будь ласка, прочитайте коментар Алістера ще раз, і ще раз, і ...
user85116

2
Я щойно дізнався, що Bitbucket закриває будь-яку підтримку Mercurial: bitbucket.org/blog/…
Алекс



5

Mercurial та PuTTY - це добре підтримуване та добре задокументоване рішення.


3

Найпростішим рішенням є використання спільних папок Samba, особливо в середовищі лише для Windows. Я щойно це налаштував, здається, працює.


Це те саме рішення, яке ми використовуємо в моїй команді.
Мізіпзор


2

Наші налаштування: сервер 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. (звичайно, значно спрощена версія)



0

Наскільки мені відомо, найкращий спосіб роботи в ртуті в таких типах установок - це те, що репо витягує зміни з джерела, а не джерело, що надсилає на "сервер".

Не існує «найкращого способу роботи», про який я знаю? Існує безліч можливих робочих процесів, які підтримує Mercurial, і навіть перелічіть їх у своєму посібнику . Я насправді використовую набір "svn-ish", де я розробляюсь у локальному сховищі та маю кілька сховищ на спільному сервері. Якщо є якісь зміни, я вписую їх у центральне сховище. Я натискаю їх через HTTPS, і (природно) я обмежую можливості натискання лише для розробників. Це чудовий спосіб роботи.

Я розумію , люди хочуть центральне сховище , щоб тягнути зміни більш з клонів розробники зробили, але ніщо не заважає вам давати собі і ваш колега спеціальний репозиторій на загальному сервері, з яких центральний репозиторій знаходиться в стані тягнути .

Можливо, ви захочете переглянути свої думки з цього приводу, штовхаючи v тягне?


0

У 2020 році ви можете використовувати гептапод:

https://about.heptapod.host/

Це рішення на основі гітлабу. Вони пропонують розміщене рішення, але ви також можете завантажити його та розмістити на власній інфраструктурі.

https://heptapod.net/heptapod-commercial-service-enters-free-public-beta.html#heptapod-commercial-service-enters-free-public-beta

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.