2011-04-22 7 views
5

Nous avons plusieurs projets en cours qui partagent la majorité de leurs fichiers de code/config. Le framework que nous utilisons a certaines dépendances de répertoires et de fichiers qui nous limitent à combien nous pouvons séparer le code commun. Par exemple, entre 'commun', 'projectA' et 'ProjectB' que nous pourrions avoir:Projets Git avec code commun

/projeta

  • /shared_dir1
    • common1
    • fileA1
    • fileA2
  • /common_dir2
    • Common2
  • /dos3
    • fileA3
  • common3
  • fileA4

/ProjectB

  • /shared_dir1
    • common1
    • fileB1
  • /common_dir2
    • Common2
  • /rep3
    • fileB2
    • fileB3
  • common3
  • fileB4
  • fileB5

Nous gérons actuellement cela avec 3 projets Git: 'commun', 'projectA' et 'ProjectB', avec des fichiers communs séparés en 'commun' et fichiers spécifiques au projet dans leurs propres projets. 'projectA' et 'projectB' ont un .gitignore avec des entrées pour tous les répertoires courants et tous les fichiers communs sous chaque répertoire partagé. Un script copie «commun» dans le projet dans lequel vous voulez travailler et le développement y est fait. Une fois la modification effectuée, un autre script copie tous les répertoires courants et les fichiers communs dans «commun». Les modifications apportées au «commun» et au projet peuvent ensuite être visualisées via le statut «git». Cela vient évidemment avec ses maux de tête de copier entre «commun», en gardant .gitignore précis, et en commutant des branches dans «projectA» et «projectB». Comme nous prévoyons «projetC-F», cependant, cette approche semble bien que nous pouvons éviter de fusionner les changements communs à N projets.

Vous cherchez des conseils pour mieux entretenir ce type de structure.Les sous-modules semblent invisibles étant donné le manque de ségrégation, sauf si nous en avons fait un grand nombre. J'ai vu quelques alternatives prometteuses en utilisant des liens symboliques, mais cela vient aussi avec ses problèmes. Tout avis sera le bienvenu.

+0

Avez-vous déjà trouvé un moyen de gérer votre projet? – maguirre

Répondre

1

Si vous êtes prêt à mettre le code partagé un référentiel git séparé, vous pourriez être intéressé par git submodules. Un sous-module vous permet d'inclure un repo git dans un autre repo.

Voici quelques liens:

+0

Il a mentionné les sous-modules - 'Submodules semblent invisibles étant donné le manque de ségrégation, sauf si nous en avons fait un grand nombre ' – manojlds

+0

Ah, je dois avoir passé sous silence ce dernier paragraphe ... Bref, je pense que les sous-modules sont toujours une bonne solution problème qu'il décrit. –

Questions connexes