2009-09-27 9 views
2

Imaginez le scénario suivant. J'ai une application iPhone contenue dans le projet Xcode A, et une application iPhone contenait le projet B, chacun de ces projets Xcode est contenu dans un dépôt git séparé. Il y a un tas de choses que je voudrais faire:Comment fusionner deux référentiels git contenant des projets Xcode

  • être en mesure de créer une bibliothèque ou cadre de certaines parties du projet B que je puis utiliser dans le projet A ou d'autres projets. Comment puis-je créer un Framework dans Xcode, puis le cloner dans un autre projet en utilisant git, de sorte que toutes les modifications que je fais pour le framework soient reflétées. Idéalement, le framework resterait partie intégrante du plus grand dépôt git et du projet Xcode B.

  • Sans créer de cadre, comment puis-je faire ce qui précède, à savoir importer une partie d'un référentiel git (appelez-le B1) dans un autre? A, afin que je puisse continuer à développer et améliorer B1 dans le cadre de B, mais peut éventuellement voir ces changements dans A?

  • Dernier point: existe-t-il un moyen facile de fusionner deux projets Xcode (s'ils ont une structure assez similaire) en utilisant git, ou d'une manière recommandée, au moins pour le rendre aussi indolore que possible.

Répondre

2

les deux premiers vous poser des questions sur peut être fait en utilisant

git submodule --add <remote repository> 

manpage

Comme pour vous la fusion pourrait essayer de créer projet git C avec le projet git A et B comme des dépôts distants. En supposant qu'il n'y a pas ou peu de chevauchement dans les fichiers, ils peuvent fusionner de manière transparente. Je pense cependant que sous-modules est probablement un meilleur pari.

+0

+1 Sous-module est le chemin à parcourir ici. – googletorp

+0

Après avoir lu la page de manuel pour sous-module, il semble qu'il insère un référentiel entier, pas une partie de celui-ci. Toute façon d'utiliser sous-module uniquement pour un sous-arbre d'un projet. Je suppose qu'une autre solution consisterait à créer un dépôt et un sous-module séparés, mais il reste le problème de créer le repo supplémentaire à partir du sous-arbre initial ... – Andres

+1

si tout ce dont vous avez besoin fait partie du repo il n'y a aucune raison de le faire t inclure le repo entier. Sauf si vous avez des contraintes de ressources fous juste submodule tout le repo. Si cela vous dérange vraiment alors il semble que le framework devrait être dans un repo séparé et ensuite utilisé comme sous-module dans tous les projets qui l'utilisent. –

2

La meilleure solution que j'ai trouvée à ce problème consiste fondamentalement à créer une bibliothèque statique à partir de n'importe quel code que je veux utiliser entre les deux projets, puis l'importer de l'autre projet Xcode. Très bien expliqué dans ce post ici: Shared Libraries

Cela nous a permis de garder les dépôts séparés, mais toujours tirer les uns des autres au besoin.

Questions connexes