2014-09-22 14 views
12

Ho trovato un paio di post correlati, ma quelli in realtà non rispondono alla mia domanda. Diciamo che voglio installare questo pacchetto: https://github.com/pear/Net_SocketCome rendere il compositore NON creare una directory .git per un pacchetto

un estratto dal mio composer.json:

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

Quindi ho bisogno per essere installato senza la directory .git in modo che non si vede come sottomodulo nel mio progetto. Come faccio a scaricare una versione "dist", come altri hanno detto? Devo taggare un commit?

risposta

10

Se un pacchetto è visto come un sottomodulo git, non è stata esclusa la cartella vendor da impegnare nel proprio repository. Si consiglia di aggiungere la cartella del fornitore a .gitignore e non impegnare questi file, solo commit composer.lock (e composer.json ovviamente).

Oltre a questo, eseguire composer install --prefer-dist dovrebbe fare il lavoro. Nota che il compositore sembra non cambiare il metodo di download usato per primo se cambi idea in seguito. Se Composer rileva un repository clonato, è più rapido aggiornarlo anziché scaricare un ZIP e decomprimerlo. Se si desidera cambiarlo, eliminare l'intera cartella vendor ed eseguire composer update --prefer-dist.

1

L'utilizzo di --prefer-dist è l'unica soluzione nativa, ma ci saranno situazioni in cui non è disponibile semplicemente una versione pacchettizzata, e in questi casi Composer tornerà ancora ai cloni git.

L'unica soluzione che conosco è eseguire uno script di pulizia dopo l'installazione di Composer che rimuove le directory Git. Forse un comando come questo:

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

Fare attenzione a eseguirlo nella directory del fornitore, non nella directory principale.

+0

Un po 'più semplice e anche più sicuro specificando la directory "fornitore": 'trova tipo-vendor d -name \ .git -exec rm -rf \ {\} \;' – JasonGabler

Problemi correlati