2011-05-04 5 views
13

Selon le "Création de référentiels" au http://dev.lshift.net/paul/mercurial-server/docbook.html tout ce que nous devons faire pour créer un nouveau référentiel est clone pas existant.Création de nouveaux dépôts à l'aide de mercurial-server

Mais dans 1.1 je ne fonctionne pas. Et si l'on regarde le code:

if cmd is None: 
    fail("direct logins on the hg account prohibited") 
elif cmd.startswith('hg -R ') and cmd.endswith(' serve --stdio'): 
    repo = getrepo("read", cmd[6:-14]) 
    if not os.path.isdir(repo + "/.hg"): 
     fail("no such repository %s" % repo) 
    dispatch.dispatch(['-R', repo, 'serve', '--stdio']) 
elif cmd.startswith('hg init '): 
    repo = getrepo("init", cmd[8:]) 
    if os.path.exists(repo): 
     fail("%s exists" % repo) 
    d = os.path.dirname(repo) 
    if d != "" and not os.path.isdir(d): 
     os.makedirs(d) 
    dispatch.dispatch(['init', repo]) 
else: 
    fail("illegal command %r" % cmd) 

nous pouvons voir, que pour créer, nous devons passer commande spécifiquement init.

Cette commande fonctionne comme prévu:

"TortoisePlink.exe" -ssh -2 [email protected] "hg init tst" 

mais je l'espère, est une commande plus élégante de le faire.

Eh bien, est-ce un "bug" dans la documentation ou est-ce que je fais quelque chose de mal?

MISE À JOUR:

Ma question est seulement de créer des dépôts à distance à l'aide mercurial-server.

MISE À JOUR 2:

C'était mon malentendu, car il n'a pas été clair pour moi qu'il devrait y avoir déjà créé référentiel local, qui sera cloné à distance.

+0

mercurial-server est * pas * Mercurial. Ce n'est pas une partie de Mercurial et il n'est pas livré avec Mercurial. Il n'a pas été écrit par les auteurs de Mercurial. –

+1

@ Ry4an: merci, capitaine. Et alors?)) et '2 + 2 = 4'. Des phrases plus évidentes dans ce fil? – zerkms

+0

@zerkms Tenez le téléphone ... '2 + 2 = 4'? – alex

Répondre

15

Je trouve très simple de créer un nouveau dépôt avec Mercurial-server. En supposant que vous disposez des droits et que le chemin "/ dir1/dir2 /" existe déjà sur le serveur, il suffit (en ligne de commande):

mkdir new 
cd new 
hg init 
hg clone . ssh://[email protected]/dir1/dir2/new 

Cheers,
Christophe.

+0

Exactement. Il n'est pas évident (du moins pour moi) qu'il soit déjà créé référentiel local, que l'on clone à distance. Je pensais que tout ce que nous devions faire est de cloner le repo local * vide * dir nouveau distant. – zerkms

+0

* "En supposant que le chemin ... existe déjà" * En fait, la version actuelle de Mercurial-server vous permet de cloner sur le serveur même si le chemin n'a pas été créé précédemment. C'est une fonctionnalité très utile de Mercurial-serveur que ... Je suis toujours à la recherche avec Git :) –

+0

Est-ce que cela peut être fait sans SSH (signifie sur HTTP)? – Kangkan

1

La page que vous consultez est destinée au partage de référentiels existants, et non spécifiquement à la création de dépôts vides. La commande que vous attribuez hg init tst est correcte pour l'initialisation d'un nouveau référentiel vide. Je pense que la seule chose "inélégante" à ce sujet est que vous le faites à distance et que vous devez donc donner les commandes ssh supplémentaires. La commande de création de référentiel elle-même hg init est assez simple.

+0

Veuillez lire la section "Créer des dépôts" à partir de ce lien de documentation. Il s'agit spécifiquement de créer des dépôts distants ;-) – zerkms

Questions connexes