2014-09-22 3 views
12

Ich habe ein paar verwandte Beiträge gefunden, aber diese beantworten nicht wirklich meine Frage. Lassen Sie uns sagen, dass ich dieses Paket installiert werden soll: https://github.com/pear/Net_SocketWie mache ich Composer nicht erstellen ein .git-Verzeichnis für ein Paket

ein Auszug aus meinem composer.json:

{ 
    "config": { 
     "preferred-install": "dist" 
    }, 
    "repositories": [ 
     { 
      "type": "vcs", 
      "url": "https://github.com/pear/Net_Socket.git" 
     } 
    ], 
    "require": { 
     "pear/net_socket": "*", 
    } 
} 

Also muss ich es ohne .git Verzeichnis installiert werden so ist es nicht gesehen als Submodul in meinem Projekt. Wie kann ich eine "dist" -Version herunterladen, wie andere gesagt haben? Muss ich einen Commit taggen?

Antwort

10

Wenn ein Paket als git-Submodul angesehen wird, haben Sie nicht ausgeschlossen, dass der Ordner vendor in Ihr eigenes Repository übertragen wird. Es wird empfohlen, den Herstellerordner zu .gitignore hinzuzufügen, und diese Dateien nicht zu committen, commit nur composer.lock (und composer.json natürlich).

Abgesehen davon sollte Lauf die Aufgabe erledigen. Beachten Sie, dass Composer die zuerst verwendete Download-Methode nicht zu ändern scheint, wenn Sie Ihre Meinung später ändern. Wenn Composer ein geklontes Repo erkennt, ist es schneller, dieses zu aktualisieren, anstatt eine ZIP herunterzuladen und zu entpacken. Wenn Sie dies ändern möchten, löschen Sie den gesamten Ordner vendor und führen Sie composer update --prefer-dist.

1

Die Verwendung von --prefer-dist ist die einzige native Lösung, aber es gibt Situationen, in denen es einfach keine gepackte Version gibt, und in diesen Fällen wird Composer immer noch auf Git-Klone zurückgreifen.

Die einzige Problemumgehung, die ich kenne, besteht darin, ein Bereinigungsskript nach der Installation von composer auszuführen, das Git-Verzeichnisse entfernt. Vielleicht ein Befehl wie folgt:

find . -type d | grep .git | xargs rm -rf 

Seien Sie vorsichtig, dies in Ihrem Lieferantenverzeichnis, nicht in Ihrem Stammverzeichnis auszuführen.

+0

Etwas einfacher und sicherer durch Angabe des "vendor" -Verzeichnisses: 'find vendor -type d -name \ .git -exec rm -rf \ {\} \;' – JasonGabler