Die Option github-protocols
funktioniert nur mit GitHub, aber es gibt eine andere Möglichkeit, das Problem zu lösen, das nicht von der Verwendung von GitHub für Ihren Git-Server abhängig ist.
Sie weisen Composer einfach an, eine andere URL zu verwenden, so wie Sie es getan hätten, wenn Sie ein Paket gespalten hätten und Sie sicherstellen wollten, dass Composer Ihre Gabel anstelle des Standardpakets verwendet hat.
Hier ist ein Beispiel, wo ich für ein Paket meine eigene Gabel benutzen, und ich zwinge das Protokoll in der URL http
statt git
für andere:
"repositories": [{
"type": "vcs",
"url": "https://github.com/brandondrew/laravel4-PHPExcel"
},{
"type": "vcs",
"url": "http://git.code.sf.net/p/tcpdf/code"
}],
Im Fall Laravel4-PHPExcel hatte ich behebt einen Fehler früh und benötigte meine Korrektur, während ich darauf wartete, dass der Betreuer meine Pull-Anfrage akzeptierte. (Nebenbei bemerkt, er hat seitdem eine Tonne von Verbesserungen an seinem Code gemacht, also lasse ich die Verwendung meiner Gabel fallen, aber ich zeige es hier, weil es als Beispiel nützlich ist, selbst wenn mein Code nein ist In der Praxis sind sie das einzige Paket, das meine Anwendung verwendet, das das Git-Protokoll festlegt. Daher erschien es mir lächerlich, zu betteln und das Sicherheitsteam an meinem Kundenstandort zu bitten, sich zu öffnen Port 9418, wenn ich stattdessen nur HTTP verwenden könnte, was (meiner Meinung nach) sie früher hätte verwenden sollen. Alles, was ich in der URL geändert habe, ist das Ersetzen von git
durch http
, aber es funktioniert wie jede andere benutzerdefinierte URL, sodass Sie die URL angeben können, die Composer für ein bestimmtes Paket verwendet.
UPDATE:
Nur aus Gründen der Vollständigkeit, fühle ich, ich sollte erwähnen, dass Sie auch als auch das Problem an der Git Ebene lösen können. Im Fall der App, in der ich mit diesem Problem konfrontiert war, hatte ich das Gefühl, dass es besser war, es in Composer zu tun, aber Ihre Situation kann sich unterscheiden, und Ihre Ansichten darüber, was der beste Ansatz für die Situation ist.
Der Git-Ansatz kann viel globaler gestaltet werden, was Sie als Vorteil sehen (oder nicht).Der einfache Fall ist Git zu sagen, eine URL für eine andere zu ersetzen:
git config --global url."http://git.code.sf.net/p/tcpdf/code".insteadOf "git://git.code.sf.net/p/tcpdf/code"
Sie können aber auch Git sagen immer ersetzen 'git: //' mit 'https: //':
git config --global url."https://".insteadOf "git://"
In den Beispielen habe ich es in die globale Konfigurationsdatei des Benutzers eingefügt, aber Sie können --global
durch --local
ersetzen, um es in die Konfigurationsdatei des Repositorys zu stellen (oder --system
, um es in die Konfigurationsdatei des Systems zu setzen).
Auf dem Zend Framework 2 war der Befehl 'php composer.phar config --global github-protocols https' – KalenGi
@KalenGi: Das ist das gleiche, aber Sie verwenden eine lokal installierte 'Composer'-Datei mit dem' '. phar' Erweiterung hinzugefügt. – iconoclast
@Seldaek: funktioniert das für andere Sites als GitHub? Zum Beispiel: git.code.sf.net? – iconoclast