2010-02-24 4 views
5

Ainsi, j'essaye de commander juste le plugin de TestNG du dépôt de contrib de Netbeans. (Ou est-ce module? Je suis nouveau à Mercurial, donc je ne sais pas vraiment le jargon encore.)Est-il possible d'extraire un seul répertoire à partir d'un référentiel Mercurial (HG)?

Quand je lance la commande suivante ...

hg clone http://hg.netbeans.org/main/contrib/ 

... Je reçois le référentiel entier, qui contient tous les plug-ins contrib. Est-il possible de simplement tirer cet endroit?

http://hg.netbeans.org/main/contrib/file/tip/testng/

Merci!

+0

duplication possible de [Comment cloner un sous-dossier d'un référentiel dans Mercurial?] (Http://stackoverflow.com/questions/920355/how-do-i-clone-a-sub-folder -of-a-repository-in-mercurial) – MvG

Répondre

9

Ce concept est appelé "clonage étroit" et non, ce n'est pas possible pour le moment dans Mercurial.

Il est sur le radar de certains d'entre nous qui contribuent à Mercurial, mais c'est un problème difficile à résoudre. Par exemple:

  • Comment calculer le hachage de toute nouvelle commits vous faire si vous ne disposez pas de tous les fichiers dans le repo?
  • Que se passe-t-il si vous essayez d'afficher l'historique d'un fichier dans contrib/testng si ce fichier a été déplacé d'un autre dossier?
0

Je ne suis pas sûr, mais je pense que la réponse dans le cas général est "probablement pas".

Si le dépôt est local (il ne semble pas comme il est dans votre cas), vous pouvez faire quelque chose comme:

hg archive -R /path/to/my/repo -I /path/to/my/repo/folder/i/want export-folder-name 

(La commande devrait être quelque chose qui exporte non-VC » d les fichiers, plutôt que de créer un dépôt partiel, puisque le contenu .hg est stocké une seule fois au niveau supérieur, plutôt qu'en morceaux dans chaque dossier comme le fait SVN.)

Cela ne fonctionne pas sur les référentiels distants. Ni ne "log hg", et les gens hg explained why:

Imaginez que j'envoyer la commande d'un journal à http://www.kernel.org/hg/linux-2.6, qui est approche 100k changesets. À une diff par seconde (beaucoup de recherche), cela prendra environ 3 heures de CPU/temps de disque sur le serveur, jamais de tonnes métriques de bande passante. Il serait plus rapide et plus simple pour tout le monde de simplement cloner le repo et de faire le journal localement.

Je suppose que hg archive ne peut pas travailler à distance pour la même raison.

+0

Il faut un peu plus de 10 minutes pour cloner le dépôt contrib sur ma connexion, et je m'en fout de tout ce qui s'y trouve à l'exception du plugin TestNG. Ce n'est pas un gros problème puisque c'est une chose ponctuelle, mais j'étais curieux de savoir s'il était possible ou non de tirer les métadonnées pour tout le repo en une seule étape, et de tirer les fichiers réels pour une partie du dépôt dans une autre étape . Je pense que la réponse est non. – braveterry

+0

Fait intéressant, GIT semble avoir la même limitation.J'imagine que concevoir un DVCS conçu pour être efficace dans le cas courant (c'est-à-dire, stocker des changesets au lieu de fichiers) rend cela difficile. – Ken

Questions connexes