63 votes

Comment puis-je cloner un sous-dossier d'un dépôt Mercurial?

J'ai un dépôt Mercurial contenant une poignée de projets connexes. Je veux branche juste un de ces projets pour travailler ailleurs.

Est de cloner qu'une partie d'un référentiel possible, et est-ce le bon moyen pour y parvenir?

53voto

Martin Geisler Points 44779

Ce que vous voulez, c'est un étroit ou partielle clone, mais ce n'est malheureusement pas encore pris en charge.

Si vous disposez déjà d'un grand dépôt et vous vous rendez compte qu'il serait judicieux de le découper en plusieurs petits dépôts, vous pouvez utiliser le convertir extension pour faire une Mercurial Mercurial conversion. Notez que cela crée un nouveau référentiel foo et vous ne pouvez pas pousser/tirer entre your-big-repo et foo.

L' convert extension n'est pas activée par défaut, ajoutez les lignes suivantes à votre repo s hgrc le fichier ou votre mercurial.ini le fichier:

[extensions]
hgext.convert=

Puis créer un map.txt le fichier avec

include "libs/foo"
rename "libs/foo" .

(remarque: vous pouvez utiliser des barres obliques même sur Windows) et exécutez

$ hg convert --filemap map.txt your-big-repo foo

Que feront foo d'un dépôt avec l'histoire complète de l' libs/foo le dossier d' your-big-repo.

Si vous souhaitez supprimer tous les éléments de preuve de l' foo de your-big-repo vous pouvez vous faire une autre conversion lorsque vous utilisez exclude libs/foo pour se débarrasser de l'annuaire.

Lorsque vous avez plusieurs référentiels comme ça et que vous souhaitez utiliser comme un tout, alors vous devriez regarder à subrepositories. Cette fonctionnalité vous permet d'inclure d'autres référentiels dans une caisse, de manière similaire à la façon dont svn:externals de travail. Veuillez suivre les recommandations sur cette page wiki.

12voto

Nathan Lee Points 1127

Au lieu de faire un partiel clone, vous pouvez utiliser le Convertir Extension de diviser votre pension à plus d'un repo par sous référentiel.

En particulier, consultez la section Conversion de Mercurial:

Il est également utile pour filtrer les dépôts Mercurial pour obtenir des sous-ensembles d'un existant. Par exemple, pour transformer un sous-répertoire subfoo d'un référentiel de foo dans un référentiel avec sa propre vie (tout en gardant son histoire complète), procédez de la manière suivante:

$ echo include subfoo > /tmp/myfilemap
$ echo rename subfoo . >> /tmp/myfilemap
$ hg convert --filemap /tmp/myfilemap /path/to/repo/foo /tmp/mysubfoo-repo

6voto

TheLQ Points 4361

J'ai tombé en face de ce problème et a trouvé une façon de le faire: en Utilisant les liens symboliques (Linux seulement, malheureusement)

Par exemple, si vous avez seulement besoin d' /project dans le référentiel, sur votre ordinateur cloner le repo dans un autre dossier, puis utilisez ln -s /repo/location/ project. Mercurial s'en occupera

3voto

Romain Points 95

Il n'est pas possible, hg clone permet de cloner le dépôt entier.

Vous pouvez prendre un coup d'oeil un sous-référentiel extension qui vous permet d'avoir un dépôt à l'intérieur d'un référentiel, qui peut correspondre à vos besoins.

2voto

cheenu Points 38

Il s'agit de droite de l'avant avec la convertir extension.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X