Ich habe ein PHP-Framework und ein CMS auf das Framework geschrieben. Der CMS ist vom Framework abhängig, das Framework ist jedoch als eigenständiger Ordner in den CMS-Dateien vorhanden. Ich möchte sie auf GitHub als separate Projekte verwalten, möchte aber nicht jedes Mal das CMS-Projekt aktualisieren, wenn ich das Framework aktualisiere. Idealerweise möchte ich, dass das CMS die Framework-Dateien irgendwie abruft, um sie in ein vordefiniertes Unterverzeichnis aufzunehmen, anstatt diese Dateien physisch festzuschreiben.
Ist das mit Git / GitHub möglich? Wenn ja, was muss ich wissen, damit es funktioniert? Denken Sie daran, dass ich eine sehr, sehr grundlegende Erfahrung mit Git habe - ich kann Repositorys erstellen und mithilfe des Git-Plugins für Eclipse ein Commit ausführen, eine Verbindung zu GitHub herstellen und fertig. Momentan arbeite ich alleine an den Projekten, so dass ich bisher nicht viel mehr über Git lernen musste, aber ich würde es gerne in Zukunft für andere öffnen und ich möchte sicherstellen, dass ich es richtig habe.
Was sollte mein idealer Workflow für Projekte mit Abhängigkeiten sein? Alle Tipps zu diesem Thema wäre auch sehr dankbar. Wenn Sie weitere Informationen zu meinem Setup benötigen, fragen Sie einfach in den Kommentaren.
quelle
Antworten:
Wenn Sie git wirklich für diesen Zweck verwenden möchten, sollten Sie zunächst die Funktionalität des Submoduls in Betracht ziehen :
Die verlinkte Seite enthält eine detaillierte Diskussion mit Beispielen für die genaue Verwendung.
Trotzdem würde ich empfehlen, Ihr Versionskontrollsystem nicht für das Abhängigkeitsmanagement zu verwenden und stattdessen ein Build-Tool zu verwenden, das diese Aufgaben für Sie erledigt , z. B. Maven oder Ant . Es gibt sogar ein PHP-spezifisches Build-Tool in der Entwicklung, Phing , aber ich habe es selbst noch nicht verwendet. Es wird in einem Artikel erwähnt, der Ihre Frage behandelt: Versionskontrolle! = Abhängigkeitsverwaltung .
Der Grund, warum Build-Tools auf lange Sicht möglicherweise besser passen, liegt darin, dass sie häufig auch unterschiedliche Repository-Typen, externe Bibliotheken (und unterschiedliche Speicherorte) und umfangreiche Überprüfungen unterstützen. Wenn Sie diese beiden Bibliotheken jedoch nur integrieren möchten und keinen zusätzlichen Aufwand verursachen möchten, ist der Ansatz des Submoduls wahrscheinlich ausreichend.
quelle
Git-Submodule eignen sich hervorragend zum Verwalten von Git-Projektabhängigkeiten.
Wenn Sie einen anderen Ansatz suchen:
Composer kann das alles für Sie tun. Composer ist ein Dependancy Manager für PHP. Die Syntax ist von json. Es ist ziemlich einfach und billig zu bedienen.
Mehr zum Komponisten:
Auf der Dokumentationsseite finden Sie ein Beispiel für die Erstellung Ihrer Datei composer.json:
Sobald Sie Ihre composer.json- und composer.lock-Datei für Ihr Projekt erstellt haben, können Sie einfach Ihre Abhängigkeiten installieren:
composer.phar install
oder aktualisiere sie:composer.phar update
oder erstelle ein bestimmtes Projekt aus packagist :composer.phar create-project acmeproject
quelle
Vor kurzem habe ich angefangen, ein Tool namens Pundle zu verwenden zum Verwalten der Abhängigkeiten meines Projekts zu verwenden. Es unterstützt eine PHP-Version, PEAR-Pakete, Git-Repositorys und SVN-Repositorys als Abhängigkeiten und ermöglicht deren einfache Angabe über ein "Pundlefile".
Sie sollten Ihre Abhängigkeiten auch so konfigurieren, dass Git / SVN-Checkouts in einem Verzeichnis abgelegt werden, das nicht der Versionskontrolle unterliegt (z. B. "Hersteller"), damit Sie bei jedem Checkout einen Neustart durchführen und das Repository Ihres Projekts schlank bleibt.
quelle