Mercurial "Server"


74

Ich benutze Mercurial schon eine Weile, aber hauptsächlich für meinen eigenen Gebrauch. Jetzt habe ich jedoch ein Projekt, an dem ich arbeite, in dem zwei von uns dasselbe Projekt erstellen, und wir werden wahrscheinlich die Dateien des anderen ändern.

Ich möchte ein Mercurial-Repository auf einem Server einrichten und dieses Repository zum "Server" machen, damit meine Änderungen und die Änderungen des anderen Editors beide auf diesen Server übertragen werden (also im Grunde das Subversion / CVS- Modell). Ich mag Mercurial und möchte nicht zu etwas wie Subversion wechseln.

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

Das Problem ist, dass ich Linux verwende, der Server Windows ist (also kein OpenSSH, oder?) Und der andere Editor auch Windows verwendet. Soweit ich weiß, besteht die beste Art, in Mercurial bei solchen Setups zu arbeiten, darin, dass das Repository Änderungen aus der Quelle abruft und nicht die Quelle auf den "Server" überträgt. Ich bin hinter mehreren Firewalls (nicht ganz meinem Netzwerk) und mein Computer ist vom Server aus nicht sichtbar. Ich gehe davon aus, dass sich auch der andere Editor hinter einer Firewall befindet (wir können also nicht einfach das lokale Mercurial starten HTTP-Server und lassen Sie den "Server" -Computer daraus 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, also genauso sichtbar wie so etwas wie google.com. Es ist ein gehosteter Windows-Server, aber ich hätte wahrscheinlich die Erlaubnis, Software zu installieren, wenn dies erforderlich ist.)


Ich habe noch keine Lösung gefunden, obwohl ich mich auch nicht so sehr bemüht habe.
user85116

1
Siehe hglabhq.com . Es ist jetzt in Alpha, aber Sie können frühzeitig darauf zugreifen, wenn Sie die Dinge wirklich testen möchten.
Anton Gogolev

Antworten:


11

Ich schlage Kiln von www.fogbugz.com vor . Es ist eine kommerzielle Versionskontrolllösung, im Grunde ein Windows-Wrapper mit Mercurial unter der Haube.

Update 2020-10-24

Vor 11 Jahren war Mercurial vielleicht eine praktikable Lösung, aber nicht mehr: Git funktioniert einfach.


Bitte beachten Sie meine Kommentare zu Mizipzor und Alistair Bell.
user85116

2
Ich fürchte, Sie verstehen nicht, was das Brennofenangebot von Fogcreek bedeutet. Kiln ist kein gehosteter Dienst - um fair zu sein, können Sie den von FogCreek bereitgestellten gehosteten Dienst verwenden, wenn Sie möchten, aber Kiln ist eine autonom installierbare Serversoftware. (Alle Details der Preisgestaltung werden auf dieser Seite besprochen - fogcreek.com/Kiln/Details.html#forYourServer )
Roland Tepp

2
Ich würde vorschlagen, dass Sie nicht verstehen, was das Ofenangebot von Fogcreek beinhaltet. Ich habe Kiln auf unserem Amazon EC2-Server gekauft und installiert, und es läuft jetzt einwandfrei. Es ist nur eine sehr schöne Hülle um Mercurial.
Contango

1
Sie haben Recht, haben nicht bemerkt, dass der Ofen auf meinem eigenen Server installiert werden kann. Danke für den Tipp.
user85116

5
Überprüfen Sie, ob rhodecode.org ein Open-Source-Quecksilberserver mit vielen Funktionen des Ofens ist (wenn auch nicht alle).
Lars Tackmann


19

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

Update: Es ist jetzt 2020 und Bitbucket unterstützt Mercurial nicht mehr, siehe: https://bitbucket.org/blog/sunsetting-mercurial-support-in-bitbucket

Eine Liste der gehosteten oder selbst gehosteten kostenlosen oder kostenpflichtigen Lösungen finden Sie unter https://www.mercurial-scm.org/wiki/MercurialHosting


16
Sicher würde es. BitBucket hat das Konzept von privaten Repos, die der Rest der Welt nicht sehen kann (sie können nicht einmal sehen, dass es da ist). Wenn Sie paranoid genug sind, dass es ein Problem ist, Ihren Code auf einen Computer zu setzen, den jemand anderes besitzt, fair genug; aber für alle anderen ist es durchaus machbar.
Alistair Bell

6
@TJ, nicht wenn Sie erklären, wie viel Zeit Sie damit verbringen werden, herauszufinden, wie Sie Ihr eigenes zentrales Repo verwalten können.
Chris Stewart

16

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


Ich habe mir das angeschaut. Es ist ein schönes System. Sie müssen sich mit einer Python-App beschäftigen, aber es war nicht zu schwer. Ich konnte nicht herausfinden, wie man es als Windows-Dienst ausführt
James L

Es gibt eine Open Source-Version von Rhodecode. Es heißt jetzt Kallithea. pythonhosted.org/Kallithea
justengel

RhodeCode (und andere Unternehmensprojekte) sind eigentlich Open Source. Bitte überprüfen Sie code.rhodecode.com für eine vollständige Liste. Es gibt viele zusätzliche Funktionen in der 4.X-Serie von RhodeCode, die nicht auch in Kallithea enthalten sind, wie Diff-Syntax-Highliting, Zusammenführungen von Pull-Request, Smart-Code-Überprüfungen usw.
marcinkuzminski

14

Update: Es ist jetzt 2020 und Bitbucket unterstützt Mercurial nicht mehr, siehe: https://bitbucket.org/blog/sunsetting-mercurial-support-in-bitbucket

Eine Liste der gehosteten oder selbst gehosteten kostenlosen oder kostenpflichtigen Lösungen finden Sie unter https://www.mercurial-scm.org/wiki/MercurialHosting

Ich empfehle, Ihr Projekt auf http://bitbucket.org/ , einer Hosting-Site für Mercurial-Repositorys, zu platzieren.

Wenn Sie nicht möchten, dass die Quelle von anderen gesehen wird, haben sie Einstellungen zum Erstellen privater Repositorys. Ich denke, du darfst ein privates Repository, bevor sie dir das in Rechnung stellen.

Bearbeiten: Bitbucket bietet jetzt unbegrenzt private / versteckte Repositorys.


23
Ich glaube nicht, dass Sie kommerzielle Entwicklungspraktiken verstehen. Es gibt keine Möglichkeit, dass der Rohquellcode dieser Firma auf dem Server eines anderen gehostet wird, unabhängig davon, welche "privaten" Repositorys vorhanden sind. Es ist einfach keine Option.
user85116

6
Werbung bedeutet nicht Unwissenheit.
Chris Stewart

11
@ Chris: Verschiedene Unternehmen haben unterschiedliche Paranoia-Levels, und das ist in Ordnung. Wenn 85116 seine Firma nicht davon überzeugen kann, dieses Zeug an BitBucket oder Fog Creek auszulagern (manche werden es tun, andere nicht), wird seine beste Option wahrscheinlich darin bestehen, eine Kopie von Kiln zu kaufen, die er vor Ort betreiben kann. Persönlich würde ich auslagern, aber in vielen Unternehmen geht das in den "zu harten politischen" Eimer.
Alistair Bell

18
Wow, ich spreche über Unwissenheit ... einige von euch verstehen es einfach nicht. Bitte lesen Sie Alistairs Kommentar oben immer wieder und ...
user85116

2
Ich habe gerade erfahren, dass Bitbucket alle Unterstützung für Mercurial schließt: bitbucket.org/blog/…
Alex Konnen

8

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

Lesen Sie die Putty- Beispiele im Mercurial: The Definitive Guide- Handbuch für die Windows-Benutzerkonnektivität.



5

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


3

Die einfachste Lösung scheint darin zu bestehen, freigegebene Samba-Ordner zu verwenden, insbesondere in einer Nur-Windows-Umgebung. Ich habe es gerade eingerichtet, scheint zu funktionieren.


Das ist die gleiche Lösung, die wir in meinem Team verwenden.
Mizipzor


2

Unser Setup: Windows 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 müssen andere Dateien eingerichtet werden, z. B. hgweb.conf / htpasswd / hggroups, aber sie sind der einfache Teil.

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

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



0

Soweit ich weiß, besteht die beste Art, in Quecksilber bei solchen Setups zu arbeiten, darin, dass das Repo Änderungen von der Quelle abruft, anstatt dass die Quelle auf den "Server" überträgt.

Es gibt keine "beste Arbeitsweise", die ich kenne? Es gibt eine Vielzahl möglicher Arbeitsabläufe, die Mercurial unterstützt, und die sogar in ihrem Handbuch aufgeführt sind . Ich verwende tatsächlich 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 habe (natürlich) die Push-Fähigkeiten nur auf Entwickler beschränkt. Es ist eine großartige Arbeitsweise.

Ich kann verstehen, dass die Leute möchten, dass das zentrale Repository die Änderungen von den von den Entwicklern vorgenommenen Klonen übernimmt, aber nichts hindert Sie daran, sich und Ihrem Kollegen ein dediziertes Repository auf dem gemeinsam genutzten Server zu geben, von dem aus das zentrale Repository stammt ist zu Pull Lage .

Vielleicht möchten Sie Ihre Gedanken zu diesem Thema überdenken?


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.