2011-01-06 4 views
6

Il y a 1 principal projet RoR et 2 autres projets partagent certaines parties du projet principal - modèles, plugins, etc.bonne façon d'organiser git de plusieurs projets

Actuellement, tous les projets sont en même dépôt svn svn externals pour les parties partagées.

Quelle est la meilleure façon de déplacer une telle disposition à git?

Répondre

3

Vous aurez besoin d'un référentiel pour chacune des pièces. (chaque projet et un ou plusieurs pour les parties partagées).

Pour inclure ces parties partagées, deux possibilités s'offrent à vous.

D'abord le facile, vous créez une gemme (privée) pour les parties partagées, ce qui signifie que vous n'avez rien besoin de lier quoi que ce soit, ajoutez simplement gem [gemname] à votre Gemfile. Lorsque vous mettez à jour la gemme, tous les projets utilisent le code modifié. Lorsque vous souhaitez inclure le code externe dans votre projet, vous avez besoin d'un peu d'organisation. Vous créez une carte racine dans laquelle vous clonez le référentiel partagé et le référentiel de projet. Ensuite, vous créez un lien symbolique (relatif) vers le dossier de code partagé. Vous pouvez simplement ajouter ce lien symbolique à votre dépôt git et le valider. Vous devez mettre à jour et valider les deux référentiels séparément.

Un exemple de la seconde méthode:

- projectfolder 
--- shared code 
--- project code 
----- lib 
------- shared (link to shared code) 

Le lien vers le code partagé est créé par la commande de ln "Code ../../../shared" partagée

Ofcourse, cela ne fonctionne que sur les systèmes supportant les liens symboliques (mac et * nix)

2

Même si j'ai accepté la première réponse, nous avons choisi une approche assez différente. Etant donné que toutes les applications ne sont que des aspects différents de 1 projet (frontend, backend et api), elles se partagent beaucoup, donc nous avons décidé de les mettre toutes dans 1 repository et les parties partagées par symlink (git peut gérer ça).

Cela simplifie l'organisation du référentiel, mais complique légèrement les scripts de déploiement, ce qui était acceptable pour nous.

Questions connexes