2011-01-28 6 views
1

j'ai cette structure de projet:problèmes d'organisation de multiples projets avec Git

root 
    | 
    +-- SHARE 
    +-- Project1 
    +-- Project2 
    +-- Project3 

Tous les projets font référence au projet SHARE.

J'ai donc créé 4 repos un dans chaque dossier. Ensuite, j'ai essayé d'ajouter SHARE en tant que sous-module à Project1, mais je ne comprends pas ce que je veux, car Git a copié tous les fichiers source de SHARE vers Project1 \ SHARE. Je wan't le sous-module SHARE pour archiver les fichiers dans le dossier SHARE, qui est parallèle à Project1.

Est-il possible de faire référence à SHARE en tant que sous-module pour Project1 sans copier les fichiers source à partir de SHARE? Ou y a-t-il une meilleure façon de dire à Repo pour Project1 que cela dépend de repo SHARE? J'utilise Windows7 avec VS2010 et Git Extensions.

Répondre

1

Le point des sous-modules est que la version du référentiel principal détermine la version d'un sous-module. Si vous n'avez pas besoin de cette fonctionnalité, vous n'avez probablement pas besoin de manipuler les sous-modules.

Maintenant, si cette fonctionnalité est souhaitée, votre structure n'a pas de sens, car différents projets peuvent nécessiter différentes versions de SHARE. C'est pourquoi il est suggéré que SHARE soit copié dans chaque référentiel, afin qu'ils ne s'affrontent pas en essayant d'obtenir les versions de SHARE qu'ils veulent.

+0

Cette structure est utilisée dans notre société depuis de nombreuses années avec une base de code relativly grande et de nombreux projets. Mais nous n'avons pas utilisé le contrôle de source jusqu'à présent. J'essaie maintenant d'adapter cette structure aux dépôts git. Il y a beaucoup de développeurs qui mettent du code dans SHARE et quand un projet est compilé, nous avons toujours la dernière source. Ce qui nous manque, c'est la fonctionnalité de revenir à une ancienne base de code (autre que la sauvegarde) lorsque nous trouvons des erreurs. Je vois votre point de vue et si cela n'a pas de sens avec git, j'utiliserai des repos séparés sans sous-modules. – Michael

+0

@Michael: Mais que se passe-t-il si vous voulez construire une ancienne version de Project1, et que le SHARE actuel est incompatible? – Cascabel

+0

Oui, vous avez raison, nous ne pouvons pas le faire pour le moment. Nous devons travailler avec des sauvegardes. Mais avec des repos Git séparés, nous pouvons vérifier l'ancien projet et la PART avec la même date. Cela devrait être possible de gérer. Mieux serait, si un sous-module ne devrait pas être sous le même dossier que le projet principal, mais malheureusement, cela ne semble pas possible avec Git. – Michael

0

Si tous vos projets peuvent faire référence à la même SHA1 de SHARE, et aurait tous les avantages de toute modification que vous le feriez dans SHARE, vous devez déclarer tous les 4 répertoires (3 Projects, 1 SHARE) comme sous-module au sein de la racine , qui serait un référentiel parent.

Mais cela signifie également que Project1 seul n'aurait aucun enregistrement de la version exacte de SHARE dont il a besoin.
Ainsi, votre structure n'a de sens que si les 3 Projects sont étroitement couplés (vous ne pouvez pas travailler sur un sans avoir à travailler sur les deux autres).