2010-01-14 12 views
5

Hier ist die Szene: Ich arbeite derzeit an meinem eigenen Framework und auf der Website eines Kunden. Hier ist die Struktur:Zwei Git Repos in einem Ordner verwenden

. 
.. 
_application 
_framework 
_public 

Ich mag würde ein Repo mit _framework/* _Public/index.php und die Struktur _application (leere Ordner für _controllers _models und _views) haben auf GitHub. Außerdem möchte ich ein Repo haben, das ALLES lokal enthält.

Ich verstand, dass ich mit git-Modulen das machen konnte, aber nach dem Nachschlagen einiger Tutorials verstehe ich immer noch nicht, wie ich das machen soll.

Könnte mir jemand etwas mehr erklären? Danke vielmals!

+0

Hier ist, was ich getan habe: Ich habe ein Verzeichnis mit meinem Framework-Zeug drin. Ich habe ein git repo drin gemacht. Und dann habe ich ein anderes Verzeichnis für das Projekt meines Kunden erstellt. Ich habe ein Repo darin erstellt und das Framework Repo meines GitHubs geklont. Und seit ich das getan habe, kann ich Sachen über mein Framework übertragen, ohne dass es überschrieben wird.Und wenn ich Änderungen direkt in mein Framework setze, setze ich sie ein und drücke sie und ich kann sie aus meinem Projektverzeichnis ziehen! Ich denke, es ist eine gute Idee :) – TomShreds

+0

Ihr Titel ist ein bisschen unklar. Es führte mich zu der Annahme, dass Sie zwei Git-Repos in demselben Ordner verwenden wollten, aber Sie verwendeten zwei Git-Repos in zwei separaten Unterordnern. Ich möchte eigentlich wissen, ob zwei separate Git-Repos verwendet werden können, um verschiedene Dateien im selben Ordner zu verfolgen. – Chad

+1

@Chad, ja, sie können: Ich habe ein Skript gemacht, das genau das tut: https://github.com/capr/multigit – cap

Antwort

7

Es scheint mir, dass Sie ein Repo pro Struktur, die Sie wollen, definieren und kombinieren Sie sie in einem Super-Projekt durch Submodule.

Weitere Details zur Art der Submodule finden Sie unter this question.

Extract:

Ein Submodul ermöglicht Ihnen, eine component-based approach Entwicklung zu haben, wo das Hauptprojekt bezieht sich nur auf bestimmte Festschreibungen von anderen Komponenten (hier „andere Git-Repositorys deklariert als Untermodule“).

Ein Submodul ist ein Marker (Commit) zu einem anderen Git-Repository, das nicht an den Hauptentwicklungszyklus des Projekts gebunden ist: Es (das "andere" Git Repo) kann sich unabhängig entwickeln. Es liegt am Hauptprojekt, aus dem anderen Repo auszuwählen, was auch immer es benötigt.

Wenn Sie jedoch eines dieser Submodule direkt aus Ihrem Hauptprojekt ändern möchten, können Sie dies tun, vorausgesetzt, Sie publizieren zuerst diese Submodul-Änderungen an seinem ursprünglichen Git Repo und dann commit your Hauptprojekt, das sich auf eine neue Version des Submoduls bezieht.

Aber die Grundidee bleibt: Referenzierung spezifische Komponenten, die:

  • ihren eigenen Lebenszyklus
  • haben ihren eigenen Satz von Tags
  • haben ihre eigene Entwicklung

Die Liste haben, Spezifische Commits, auf die Sie sich in Ihrem Hauptprojekt beziehen, definieren Ihre configuration (dies ist, was Configuration Manag ement dreht sich alles um, einschließlich der einfachen Version Control System)


Also, wenn Sie wirklich zwei Struktur aufweisen, die unabhängig voneinander entwickeln können, Submodule sind eine gute Passform.

Verwandte Themen