web-dev-qa-db-fra.com

Mercurial "serveur"

J'utilise Mercurial depuis un petit moment, mais principalement pour mon propre usage. Maintenant, cependant, j'ai un projet sur lequel deux d'entre nous construisons le même projet, et nous allons probablement modifier les fichiers l'un de l'autre.

Je souhaite installer un référentiel Mercurial sur un serveur et le transformer en "serveur". Ainsi, mes modifications et celles de l’autre éditeur sont toutes deux appliquées à ce serveur (donc fondamentalement le Subversion / CVS modèle); Cependant, j'aime bien Mercurial et je ne veux pas passer à quelque chose comme Subversion.

Ici, dans mon propre réseau, tout est fait sous Linux et mon "serveur" a OpenSSH installé. Donc, transmettre mes modifications (je travaille sur plusieurs ordinateurs) d'un ordinateur au serveur est simplement une question de "hg Push"; le protocole utilisé est SSH pour transférer les modifications.

Le problème est que j'utilise Linux, le serveur sera Windows (donc pas d'OpenSSH, n'est-ce pas?) Et l'autre éditeur utilisera également Windows. Autant que je sache, la meilleure façon de travailler dans Mercurial dans ce type de configuration est que le référentiel récupère les modifications depuis la source, plutôt que la source transmise au "serveur". Je suis derrière plusieurs pare-feu (pas entièrement sur mon réseau) et mon ordinateur ne sera pas visible depuis le serveur, et je suppose que l'autre éditeur sera également derrière un pare-feu (nous ne pouvons donc pas simplement démarrer Mercurial local. Serveur HTTP et obtenez le "serveur" ordinateur à tirer de cela). 

Quel est le meilleur moyen pour les deux éditeurs d’obtenir nos modifications dans le référentiel du serveur? (Je devrais ajouter que le serveur est un serveur sur Internet, il est donc aussi visible que quelque chose comme google.com. C'est un serveur Windows hébergé, mais j'aurais probablement la permission d'installer un logiciel si cela est nécessaire.)

73
user85116

Je suggère Kiln de www.fogbugz.com. Il s’agit d’une solution commerciale de contrôle des sources, essentiellement une enveloppe Windows avec Mercurial sous le capot.

12
Contango

Je crois que la lecture de la documentation du projet est un bon début: https://www.Mercurial-scm.org/wiki/PublishingRepositories .

49
Milen A. Radev

Cela pourrait également simplifier l'administration en l'externalisant - si vous ne disposez que d'un seul référentiel et de deux types de responsables, vous pourriez faire bien pire que de simplement l'héberger quelque part comme Bitbucket . (Et pour une solution à référentiel unique, c'est en fait gratuit.)

19
Alistair Bell

Jetez un coup d'œil à rhodecode , un serveur Mercurial open source offrant de nombreuses fonctionnalités proposées par Kiln , notamment la recherche de code. Il s'intègre même parfaitement à LDAP afin que vous puissiez authentifier les utilisateurs HG avec votre domaine Windows.

16
Lars Tackmann

Je recommande de placer votre projet sur http://bitbucket.org/ , un site d'hébergement de référentiels Mercurial. Si vous ne voulez pas que la source soit vue par d'autres, ils ont des paramètres pour créer des référentiels privés. Je pense que vous êtes autorisé à un référentiel privé avant qu'ils ne commencent à vous facturer pour cela.

Edit: Bitbucket now fournit des référentiels illimités privés/cachés.

14
Mizipzor

Il existe certainement de nombreux serveurs SSH disponibles pour Windows. Voici deux exemples:

Découvrez les exemples PuTTY dans le livre Mercurial: Le guide définitif pour la connectivité de l'utilisateur Windows.

8
Dave K

Vous pouvez utiliser SCM-Manager pour partager vos référentiels via http ou https.

6
sdorra

Mercurial et PuTTY est une solution bien supportée et bien documentée.

5
dfa

La solution la plus simple semble être d'utiliser des dossiers partagés Samba, en particulier dans un environnement Windows. Je viens de l'installer, semble fonctionner.

3
ansgri

Notre configuration: serveur Windws + Apache + Mercurial

Une partie de notre 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>

Il y a d'autres fichiers à configurer, tels que hgweb.conf/htpasswd/hggroups, mais ils constituent la partie la plus facile. 

Cela fonctionne très bien. Si un utilisateur souhaite changer de mot de passe, je lui demanderai de consulter un générateur en ligne htpasswd pour générer la séquence htpasswd pour moi, je le mettrai dans le fichier htpasswd. 

Je pense que notre configuration est assez similaire à celle de VisualSvn Server. (bien sûr, une version très simplifiée)

2
bo bo

Je ne l'ai pas utilisé moi-même mais jetez un oeil sur Mercurial Server de LShift.

2
Big Rich

Partagez un dossier Dropbox qui contient votre «référentiel de serveurs».

1
Rabarberski

Autant que je sache, la meilleure façon de travailler dans Mercurial dans ces types des configurations est pour le repo extraire les modifications de la source, plutôt que la source poussant vers le "serveur".

Il n'y a pas de "meilleure façon de travailler" que je sache? Mercurial prend en charge une multitude de flux de travail possibles, et même listez-les dans leur guide . J'utilise en fait la configuration "svn-ish", où je développe dans un référentiel local et possède plusieurs référentiels sur un serveur partagé. S'il y a des changements, je les pousse dans le référentiel central. Je les pousse sur HTTPS, et j'ai (naturellement) limité les capacités de Push aux développeurs uniquement. C'est une excellente façon de travailler.

Je comprends que les gens souhaitent que le référentiel central récupère les modifications des clones créés par les développeurs, mais rien ne vous empêche de vous donner, à vous et à votre collègue, un référentiel dédié sur le serveur partagé, à partir duquel le référentiel central is capable de tirer.

Vous voudrez peut-être reconsidérer vos idées sur le sujet qui vous pousse à vous tirer?

0
Berry Langerak