web-dev-qa-db-fra.com

Référentiel Git dans le référentiel Git

J'ai un dépôt git principal A et nous utilisons des sources d'un autre dépôt git B dans un sous-répertoire de notre projet principal. Maintenant, il serait bon que le référentiel B soit extrait dans le référentiel A de ce sous-répertoire utilisé. Si quelqu'un d'autre clone ensuite le référentiel, bien sûr, il devrait obtenir notre référentiel principal A et dans celui-ci automatiquement le référentiel B.

Permettez-moi de visualiser la structure du répertoire:

 + main_repository - le répertoire racine du référentiel principal 
 + src - répertoire contenant la source 
 + foreignRepo - ce devrait être le répertoire racine d'un autre dépôt git 
 + binaires 
 + autres 

Cela doit également être connu dans le référentiel distant, juste une copie locale ne m'aide pas, car d'autres personnes vérifient cela et doivent être en mesure de compiler toutes les choses.

37
Buuuh

Vous voudrez en savoir plus sur sous-modules Git .

23
Adrian Petrescu

Utilisation git subtree dans la version 1.7.11 et supérieure de git. git subtree est supérieur au git submodule car:

  • La gestion d'un flux de travail simple est facile. Les anciennes versions de git sont prises en charge (même avant la v1.5.2)
  • Le code du sous-projet est disponible juste après le clonage du super projet
  • git subtree n'exige pas que les utilisateurs de votre référentiel apprennent quelque chose de nouveau, ils peuvent ignorer le fait que vous utilisez un sous-arbre pour gérer les dépendances
  • git subtree n'ajoute pas de nouveaux fichiers de métadonnées comme git submodule fait (comme .gitmodule)
  • Le contenu de la sous-arborescence peut être modifié sans avoir une copie de référentiel distincte de la dépendance ailleurs

De plus, si vous devez détacher une sous-arborescence de votre référentiel existant dans un nouveau référentiel , git subtree split peut vous aider.

MISE À JOUR Février 2020: De nos jours j'aime subrepo encore plus.

8
John McGehee

Vous pouvez imbriquer deux git repo sans utiliser de sous-modules. Supposons que ChildRepo est un sous-répertoire de ParentRepo, et les deux sont des référentiels git.

+ ParentRepo
  - ChildRepo

Si vous ajoutez un fichier à ChildRepo, ParentRepo l'ignorera. Lorsque vous le validez, il sera ajouté à ChildRepo. Il n'est pas possible d'ajouter des fichiers dans ChildRepo à ParentRepo.

Plus d'informations: Gchats de repo GIT imbriqués!

6
Sjoerd