2010-05-01 11 views
13

Je suis nouveau à Mercurial et essaye de comprendre s'il pourrait remplacer SVN. Tout le monde avec qui je travaille a utilisé SVN, CVS et VSS (shiver), donc cela pourrait être un gros changement. J'ai été très intéressé après avoir lu sur sa fusion et sa capacité de branche, mais j'ai quelques réserves.Comment configurer au mieux un référentiel central/plusieurs référentiels centraux pour Mercurial?

Nous sommes actuellement sur SVN, et avons un référentiel central. D'après mes lectures, il semble qu'il n'y ait pas de référentiel central pour tous les projets lors de l'utilisation de Mercurial. REMARQUE: nous considérons chaque projet comme un ensemble logique distinct de code ou une solution Visual Studio. Il fonctionne seul.

Nous avons environ 60 projets distincts dans notre référentiel SVN central. Après avoir lu sur Mercurial il me semble que je dois créer 60 dépôts centraux distincts pour chacun de ces projets sur le serveur. QUESTION # 1: Dois-je créer un référentiel unique pour chaque projet? Si oui, je m'inquiète de la configuration et de l'hébergement de 60 serveurs Mercurial centraux distincts. J'ai commencé à penser que je pouvais configurer un fichier, mais il semble que chaque référentiel doit être configuré individuellement en utilisant le fichier "C: ... \ MyRepository.hg \ hgrc" (installation de Windows). Il semble aussi que je dois exécuter 60 serveurs (> hg serve), je suppose sur différents ports. QUESTION N ° 2: Si la réponse à la question 1 est oui, il devrait y avoir un référentiel central unique pour chaque projet, puis comment les personnes ont-elles géré de nombreux référentiels multiples? Finalement, je n'ai pas cherché à déplacer tout l'historique et les changements d'un dépôt SVN à un tas de dépôts Mercurial séparés, mais j'apprécierais tous les commentaires de quelqu'un qui a fait cela (ou même si c'est possible).

Répondre

11

Mercurial supporte très bien les "dépôts centraux", mais il les fait par convention plutôt que par fiat.

Vous devez exécuter un seul serveur pour exécuter les soixante dépôts, et vous n'utiliserez pas hg serve pour cela. Au lieu de cela, vous choisissez l'une des méthodes de qualité de production de among the publishing options. Vous allez probablement exécuter hgwebdir derrière Apache, Nginx ou IIS en fonction de vos préférences.

Une fois lancé, vous pouvez créer de nouvelles repsitories avec hg init ou hg clone dans votre répertoire de référentiels. Chez un employeur précédent, nous avions cinq produits, avec un référentiel «central» pour chacun, et dix à vingt clones de chacun pour différentes équipes et fonctionnalités, tous fonctionnant sur un seul serveur. Le repo central détermine "ce qui est officiel" mais vous trouverez des repos improvisés pour des fonctionnalités non officielles qui apparaissent tout le temps.

hg serve est pour deux devs de transmettre quelques changesets dans l'urgence, mais les repos publiés nécessitent un peu plus d'échafaudages.

6

Vous allez créer 1 référentiel central par projet. Si j'étais vous, je penserais à l'hébergement via Kiln. Il contient de très bons outils de révision et une belle interface web autour de Mercurial avec un nombre illimité de dépôts et de stockage. Ils prennent soin de tous les méchants morceaux d'hébergement et de sauvegarde pour vous. Je recommande également fortement Joel's Mercurial tutorial.

0

De la manière la plus simple, vous auriez besoin de 60 "référentiels" centraux, qui peuvent tous être servis en utilisant un serveur de contenu/web. Chaque référentiel peut être traité comme un répertoire avec un chemin depuis la racine du conteneur du serveur.

Pensez à bitbucket ou github.Ils servent des milliers de dépôts sous un serveur (ou très probablement une ferme de serveurs), mais ils sont indépendants l'un de l'autre, contrairement à SVN où tout est sous un référentiel géant et partage les incréments de révision.

2

Si vous cherchez quelque chose d'auto-hébergé, jetez un oeil à http://rhodecode.org c'est beaucoup plus puissant que hgweb pure. C'est comme un petit bitbucket juste auto-hébergé.