Fichier unique sous-module Git
Je suis en train de déterminer les meilleures pratiques pour le partage de code entre les dépôts Git.
Jusqu'à présent, je n'ai évidemment trouver submodules qui semblent comme ils sont - presque - adapter le projet de loi. Mon projet est en PHP, framework MVC avec une structure simple:
- /app
- core.php
- /core
Où app
est un dossier contenant l'application des contrôleurs spécifiques, les modèles, vues, etc. alors que core
contient ceux des généraux d'utilisation, par exemple un identifiant de connexion du contrôleur. Le core.php
fichier lui-même est le mondial gestionnaire pour toutes les demandes.
En tant que tel, le code partagé entre tous mes déploiements de ce framework MVC est core.php
et core
.
Je peux voir comment il est possible de tourner core
dans un Git sous-module, mais pas core.php
.
Est-ce même possible? Ai-je besoin d'une redéfinition de l'architecture de mon cadre, de sorte que core.php
réside à l'intérieur de la core
dossier afin que je puisse faire tout le dossier à un sous-module, ou est-il un meilleur moyen?
source d'informationauteur Will Croft
Vous devez vous connecter pour publier un commentaire.
Peut-être que vous êtes mieux lotis de maintien de la core.php et de base dans un autre repo, et ensuite de l'utiliser comme une télécommande.
Ensuite, vous pouvez le gérer en le tirant dans tout projet il est utilisé. Pour ce faire, il suffit de lancer le nouveau projet comme un distinct repo git, puis tirez-le dans le 'noyau' repo comme une sous-arborescence.
Ce chapitre vous montre comment le faire:
De Référence Mise À Jour: http://git-scm.com/book/en/v2/Git-Tools-Advanced-Merging#_subtree_merge
Référence D'Origine: https://git-scm.com/book/en/v1/Git-Tools-Subtree-Merging
C'est un peu mieux pour vous que la configuration indiquée dans la section précédente du livre (6.6).
Le regarder; il pourrait être utile.
Si vous pouvez utiliser des liens symboliques (par exemple, vous n'utilisez pas Windows), vous pouvez configurer
core
etcore.php
comme ceci:Dans chaque application du référentiel, la
base/
répertoire est soit un sous-module qui utilise la “base” référentiel ou d'un sous-arbre de fusion de la “base” du référentiel.Les deux méthodes vous permettent de commencer à faire des changements à la base de code dans le contexte d'une application en particulier et, plus tard, tirez ces modifications dans la base principale de référentiel. Lors de l'utilisation de submodules, vous devez être prudent de toujours publier une nouvelle base s'engage avant de publier n'importe quelle application s'engage à ce que la référence à ces nouveaux de la base de commits (ce n'est pas un problème lors de l'utilisation de la sous-arborescence fusionne parce que chaque application est “plat” et effectivement a sa propre copie de la base).
Le tiers git subtree commande semble être une très jolie façon de gérer le sous-arbre de fusion, si vous décidez contre les submodules.
Sous-arbre
Sous-module
Un sous-module est un dépôt git, avec ses propres .répertoire git, donc il doit être contenu dans un répertoire. Je ne crois pas qu'il y a moyen de se déplacer facilement. Vous allez avoir à emballer vos choses dans un répertoire en quelque sorte - et si core.php va avec les trucs de base, il prend tout son sens pour eux d'être ensemble dans un sous-module de repo!
rmk réponsece qui suggère que vous faites cela dans un repo, à l'aide de base et core.php en tant que point de départ est une autre raisonnable. Vous devriez prendre votre décision basée sur ce que vous attendez de flux de travail. Un sous-module sera bon, si vous envisagez sur la modification de la base* le contenu séparément à partir des projets qui l'utilisent; vous pouvez ensuite mettre à jour les submodules dans les différents projets qui l'utilisent. Une base de référence référentiel sera bonne si vous souhaitez modifier le core* contenu afin de répondre à un projet spécifique; vous pouvez alors tirer de la base de pensions pour obtenir des mises à jour, de les fusionner avec les modifications que vous avez faites dans le projet de repo.