Ich brauche etwas wie Submodule, die aber außerhalb des Haupt-Repository als Abhängigkeit existieren.Wie füge ich ein Git-Repository als eine gemeinsame Abhängigkeit von einem anderen Git-Repository hinzu?
Hier ist das Problem:
Ich versuche, Git zu verwenden (in eine wirklich unangenehmen Art und Weise) Design-Dateien für ein CAD-Werkzeug (Cadsoft Adler), und ich habe eine harte Zeit zu verwalten Bezifferung aus, wenn es eine Möglichkeit gibt, git-Submodule zu verwenden, um die Abhängigkeit eines Projekts von der gemeinsamen Bibliothek des CAD-Tools zu verwalten.
Ich verwende eine Ordnerstruktur wie folgt:
~/eagle/ <-- Main library used by multiple projects
.git/
<library files>
~/projects/ <-- Projects folder
Proj0/
.git/
<design files>
Proj1/
.git/
<design files>
In diesem Fall ist es nicht sinnvoll, das eagle.git Repository als git Submodul für jedes Projekt hinzuzufügen.
Ich benötige jedoch immer noch eine Möglichkeit, den aktuellen Status des "eagle.git" -Repositorys festzuhalten. Wenn die Bibliothek in Zukunft aktualisiert wird, kann sie zurückgesetzt werden, um auf die spezifische Revision der Bibliotheksdateien zuzugreifen wurden verwendet, als das Proj [x] festgeschrieben wurde.
Idealerweise würde ich so etwas wie das wie folgt vor:
~/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/
Ich möchte in der Lage sein:
cd ~/projects/Proj0
git submodule update
und haben die ~/Adler/Verzeichnis automatisch ein Rollback auf Die Revision wurde in Proj0 eingecheckt.
Jeder weiß etwas in Git, die für diese Art von Verhalten zulassen könnte?
Können Sie klären, warum Submodule für Sie hier nicht funktionieren? Es klingt für mich wie Submodule sind genau das, was Sie brauchen. –
Damit das CAD-Werkzeug (Eagle) eine Bibliothek "sehen" kann, muss es den Pfadeinstellungen von Eagle hinzugefügt werden. Wenn ich das "eagle" -Bibliotheksrepo als Submodul für jedes Projekt hinzufüge, müsste ich den Pfad für die Submodulbibliothek jedes Projekts manuell anhängen, was dazu führen würde, dass [x] Kopien der Eagle-Bibliothek in Eagles erscheinen würden Bibliotheksverwalter. Herauszufinden was ist was und diese separaten Kopien im CAD-Tool zu verwalten wäre ein Albtraum. Außerdem kann die Bibliothek um Größenordnungen größer sein als die Projektdateien, so dass es wirklich verschwenderisch erscheint, wenn [x] Kopien davon auf der Platte herumliegen. – cdwilson
Eine hilfreiche Art, darüber nachzudenken, ist eine Analogie. Nehmen wir an, Eagle CAD-Tool ist eine Fabrik, die ein Widget auf einmal erstellen kann. Lasst uns sagen, dass jedes Projekt [x] .git Repo durch einen Herstellungsentwurf [x] für ein Widget [x] repräsentiert wird, das die Fabrik herstellt. Das eagle.git Repo wird durch die Werkseinstellungen (die Maschinen, Arbeiter, Rohstoffe) repräsentiert, die benötigt werden, um das Widget [x] zu erstellen. – cdwilson