J'ai besoin de quelque chose qui s'apparente à des sous-modules, mais qui existent en dehors du référentiel principal en tant que dépendance.Comment ajouter un dépôt git en tant que dépendance partagée d'un autre dépôt git?
Voici le problème:
Je suis en train d'utiliser Git (d'une manière très maladroite) pour gérer les fichiers de conception d'un outil de CAO (Cadsoft Aigle), et je vais avoir du mal à comprendre out s'il existe un moyen d'utiliser les sous-modules git pour gérer la dépendance de chaque projet par rapport à la bibliothèque partagée de l'outil de CAO.
J'utilise une structure de dossiers comme celui-ci:
~/eagle/ <-- Main library used by multiple projects
.git/
<library files>
~/projects/ <-- Projects folder
Proj0/
.git/
<design files>
Proj1/
.git/
<design files>
Dans ce cas, il n'a pas de sens pour ajouter le référentiel eagle.git comme un sous-module git pour chaque projet.
Cependant, j'ai encore besoin d'un moyen de prendre un instantané de l'état actuel du référentiel "eagle.git" de sorte que si la bibliothèque est mise à jour, elle peut être restaurée pour accéder à la révision spécifique des fichiers de bibliothèque étaient utilisés lorsque le Proj [x] était engagé.
Idéalement, je voudrais quelque chose comme ce qui suit:
~/eagle/ <-- Main library used by multiple projects
.git/
<library files>
~/projects/ <-- Projects folder
Proj0/
.git/
<design files>
**eagle** <-- something that acts like a submodule
but which actually points to ~/eagle/
Proj1/
.git/
<design files>
**eagle** <-- something that acts like a submodule
but which actually points to ~/eagle/
Je voudrais pouvoir:
cd ~/projects/Proj0
git submodule update
et ont le ~/aigle/répertoire rouler automatiquement à la révision vérifiée dans Proj0.
Quelqu'un sait quoi que ce soit dans Git qui pourrait permettre ce genre de comportement?
Pouvez-vous expliquer pourquoi les sous-modules ne fonctionneront pas pour vous ici? Il me semble que les sous-modules sont exactement ce dont vous avez besoin. –
Pour que l'outil de CAO (Eagle) puisse "voir" une bibliothèque, il doit être ajouté aux paramètres de chemin d'accès de Eagle. Si j'ajoutais le dépôt de la bibliothèque "aigle" comme sous-module pour chaque projet, je devais ajouter manuellement les paramètres de chemin d'accès du chemin de la bibliothèque du sous-module de chaque projet, ce qui ferait apparaître [x] copies de la bibliothèque "aigle" dans Eagle gestionnaire de bibliothèque. Déterminer ce qu'il faut faire et gérer ces copies séparées dans l'outil de CAO serait un cauchemar. En outre, la bibliothèque peut avoir des ordres de grandeur plus grands que les fichiers du projet, il semble donc vraiment inutile d'en avoir [x] copies sur le disque. – cdwilson
Une manière utile de penser à ceci est par l'intermédiaire d'une analogie. Disons que l'outil DAO Eagle est une usine qui peut fabriquer un widget à la fois. Disons que chaque projet [x] .git repo est représenté par un plan de fabrication [x] pour un widget [x] fabriqué par l'usine. Le repo eagle.git est représenté par la configuration d'usine (les machines, les travailleurs, les matières premières) nécessaires pour fabriquer ce widget [x]. – cdwilson