wake-up-neo.com

Mercurial "Server"

Ich verwende Mercurial seit einiger Zeit, hauptsächlich aber für meinen eigenen Gebrauch. Nun habe ich jedoch ein Projekt, an dem ich arbeite, wo zwei von uns dasselbe Projekt erstellen, und wir werden wahrscheinlich die Dateien des jeweils anderen ändern.

Ich möchte ein Mercurial-Repository auf einem Server einrichten, dieses Repository zum "Server" machen, also sowohl meine Änderungen als auch die Änderungen des anderen Editors auf diesen Server drücken (also im Grunde die Subversion / CVS Modell); Ich mag Mercurial jedoch und möchte nicht zu so etwas wie Subversion wechseln.

Hier in meinem eigenen Netzwerk wird alles unter Linux gemacht, und mein "Server" hat OpenSSH installiert. Das Übertragen meiner Änderungen (ich arbeite auf mehreren Computern) von einem Computer auf den Server ist nur eine Frage von "hg Push". Das verwendete Protokoll ist SSH zum Übertragen der Änderungen.

Das Problem ist, dass ich Linux verwende, der Server wird Windows sein (also kein OpenSSH, oder?) Und der andere Editor wird auch Windows verwenden. Soweit ich weiß, besteht die beste Möglichkeit, in Mercurial in diesen Setup-Typen zu arbeiten, darin, dass das Repository Änderungen von der Quelle abruft und nicht von der Quelle, die auf den "Server" pusht. Ich stehe hinter mehreren Firewalls (nicht ganz in meinem Netzwerk) und mein Computer ist vom Server nicht sichtbar. Ich gehe davon aus, dass sich auch der andere Editor hinter einer Firewall befindet (wir können also nicht einfach den lokalen Mercurial starten.) HTTP-Server und den "Server" -Computer dazu bringen, daraus zu ziehen). 

Wie können beide Editoren unsere Änderungen am Server-Repository am besten abrufen? (Ich sollte hinzufügen, dass der Server ein Server im Internet ist, daher ist er genauso sichtbar wie etwa google.com. Es ist ein gehosteter Windows-Server, aber ich hätte wahrscheinlich die Berechtigung, Software zu installieren, falls dies erforderlich ist.)

73
user85116

Ich schlage Kiln von www.fogbugz.com vor. Hierbei handelt es sich um eine kommerzielle Lösung zur Quellcodeverwaltung, im Wesentlichen einen Windows-Wrapper mit Mercurial unter der Haube.

12
Contango

Ich glaube, das Lesen der Projektdokumentation ist ein schöner Start: https://www.Mercurial-scm.org/wiki/PublishingRepositories .

49
Milen A. Radev

Es könnte auch die Administration vereinfachen, um es auszulagern - wenn Sie nur ein Repository haben und ein paar Leute es schieben/ziehen, könnten Sie viel schlimmer machen, als nur irgendwo zu hosten, wie Bitbucket . (Und für eine One-Repository-Lösung ist es tatsächlich kostenlos.)

19
Alistair Bell

Werfen Sie einen Blick auf Rhodecode es handelt sich um einen Open-Source-Mercurial-Server mit vielen Funktionen, die Kiln bietet, einschließlich Code-Suche. Es lässt sich sogar gut in LDAP integrieren, sodass Sie HG-Benutzer mit Ihrer Windows-Domäne authentifizieren können.

16
Lars Tackmann

Ich empfehle Ihnen, Ihr Projekt auf http://bitbucket.org/ , einer Mercurial Repository-Hosting-Site, zu platzieren. Wenn Sie nicht möchten, dass die Quelle für andere sichtbar ist, haben sie Einstellungen zum Erstellen privater Repositorys. Ich denke, du darfst ein privates Repository haben, bevor sie dich dafür in Rechnung stellen.

Edit: Bitbucket now bietet unbegrenzte private/versteckte Repositorys.

14
Mizipzor

Es gibt sicherlich viele SSH-Server für Windows. Hier sind zwei Beispiele:

Schauen Sie sich die Beispiele PuTTY im Buch Mercurial: The Definitive Guide für die Windows-Benutzerkonnektivität an.

8
Dave K

Sie können SCM-Manager verwenden, um Ihre Repositorys über http oder https zu teilen.

6
sdorra

Mercurial und PuTTY ist eine gut unterstützte und gut dokumentierte Lösung.

5
dfa

Die einfachste Lösung scheint die Verwendung von gemeinsam genutzten Samba-Ordnern zu sein, insbesondere in einer Windows-Umgebung. Ich habe es gerade eingerichtet, scheint zu funktionieren.

3
ansgri

Unser Setup: Windws Server + Apache + Mercurial

Teil unserer 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>

Es gibt andere Dateien, die eingerichtet werden müssen, wie hgweb.conf/htpasswd/hggroups, aber sie sind der einfache Teil. 

Es hat ziemlich gut funktioniert. Wenn ein Benutzer das Kennwort ändern möchte, werde ich ihn bitten, zu einem Online-Generator für htpasswd zu gehen, um die htpasswd-Sequenz für mich zu generieren. Ich lege es in die Datei htpasswd. 

Ich denke, unser Setup ist dem von VisualSvn Server sehr ähnlich. (natürlich eine stark vereinfachte Version)

2
bo bo

Ich habe es selbst nicht benutzt, aber schaue mir Mercurial Server von LShift an.

2
Big Rich

Geben Sie einen Dropbox Ordner frei, der Ihr "Server-Repository" enthält.

1
Rabarberski

Soweit ich weiß, ist die beste Arbeitsweise bei Mercurial in diesen Bereichen Bei Setups bezieht sich das Repo darauf, Änderungen aus der Quelle zu ziehen, und nicht die Quelle drückt auf den "Server".

Es gibt keine "beste Arbeitsweise", die ich kenne? Es gibt eine Vielzahl von möglichen Arbeitsabläufen, die Mercurial unterstützt, und die gerade Liste in ihrem Guide . Ich verwende eigentlich das "svn-ish" -Setup, bei dem ich in einem lokalen Repository entwickle und mehrere Repositorys auf einem gemeinsam genutzten Server habe. Wenn es Änderungen gibt, schiebe ich sie in das zentrale Repository. Ich schiebe sie über HTTPS, und ich habe (natürlich) nur Push-Fähigkeiten für Entwickler. Es ist eine großartige Arbeitsweise.

Ich kann verstehen, dass die Leute möchten, dass das zentrale Repository die Änderungen von den Klonen der Entwickler übernimmt, aber es gibt nichts, was Sie daran hindert, Ihnen und Ihrem Kollegen ein dediziertes Repository auf dem gemeinsam genutzten Server zu geben, von dem das zentrale Repository kann ziehen.

Vielleicht möchten Sie Ihre Gedanken zu der Angelegenheit, die v pulling drängt, noch einmal überdenken?

0
Berry Langerak