2009-07-02 6 views
21

J'ai un très vieux projet qui inclut directement la source d'un autre projet, au lieu de le lier comme une bibliothèque. Dans les mauvais jours, quand je gardais tout dans CVS, j'ai eu le code externe sur une branche de vendeur et ai fait des importations périodiques. Maintenant que mon projet est en git, il serait plus logique d'inclure le projet externe en tant que sous-module. Mais, il y a un problème: le projet externe a migré vers Mercurial. J'ai trouvé les projets git-hg et hg-git, mais je ne suis pas sûr si l'un ou l'autre gère correctement les sous-modules.sous-module git de Hg repo?

Existe-t-il un moyen de créer un sous-module git qui pointe vers un repo Hg au lieu d'un repo git?

Répondre

12

Depuis le hg-git mentionne que les sous-modules ne sont pas encore pris en charge, qui ne laisse qu'une option manuelle:

  • installer un dépôt Git quelque part que vous avez accès push pour,
  • ajouter comme Git à distance puis
  • exécutez hg gpush à partir de votre projet.

Par exemple:

$ cd hg-git # (an Hg repository) 
$ hg gremote add origin [email protected]/schacon/hg-git.git 
$ hg gpush 

Ce repo Git représentera votre sous-module, mais si vous modifiez et appuyez sur ce sous-module, vous aurez encore à tirer de cette git au repo Hg réelle.

D'autres grandes commandes git-hg sont listées dans ce "rosetta stone".

+1

Il y a une faute de frappe dans l'exemple. "$ hg push" devrait être "$ hg gpush" comme mentionné dans la description ci-dessus. Sauf que, la réponse de @ VonC a été très utile pour moi. Merci! :-) –

+1

Cet exemple est confus avec son nom. Quel est le répertoire principal du dépôt et quel est le sous-répertoire/sous-répertoire? – einpoklum

+0

@einpoklum d'après ce que je peux lire de cette question de 7 ans, le sous-module est le repo externe qui a migré vers mercurial. L'objectif est de pousser votre clone mercurial local vers le repo Git distant, qui peut ensuite être référencé comme sous-module par n'importe quel dépôt parent Git. – VonC

Questions connexes