2013-10-26 9 views
53

Sto utilizzando l'applicazione ZF2 scheletro e ha una Gitignore che impedisce librerie esterne di essere impegnata a git. Durante il debug mi piace andare a cambiare le cose qua e là nella fonte delle biblioteche per imparare come funzionano le cose. Se questi fossero controllati in versione sarebbe molto facile riportarli al loro stato originale.Come forzare il compositore a reinstallare una libreria?

Come posso forzare Composer reinstallare un quadro particolare in modo che io possa avere di nuovo una nuova copia -unmodified-?

PS: Si prega di non suggerire di rimuovere il file .gitignore dal momento che è lì per un motivo; impedisce alle mie librerie di terze parti di entrare nel repository della mia app. Posso sempre installarli durante una distribuzione automatizzata.

+2

Una potrebbe essere quella di eliminare il compositore. bloccare e quindi su Esegui compositore installare – vascowhite

risposta

33

È possibile utilizzare il flag --prefer-source per compositore alla cassa pacchetti esterni con le informazioni VCS (se presente disponibili). Puoi semplicemente ripristinare lo stato originale. Inoltre, se si invia il comando composer update, il compositore rileva eventuali modifiche apportate localmente e chiede se si desidera eliminarle.

Il file .gitignore è correlato al progetto di root (scheletro ZF2) e impedisce alla dir del fornitore (dove sono le librerie di terze parti) di eseguire il commit sul proprio VCS. Il file ignore non è correlato al repository git dei tuoi fornitori. cartella

+3

Inizialmente il vostro suggerimento -prefer-source non ha funzionato fino a quando mi sono reso conto che ho dovuto rimuovere e reinstallare tutte le librerie per far funzionare tutto questo, come ho inteso e quindi 'stato compositore -V' mi ha dato le informazioni con i cambiamenti. – Julian

+0

Sono contento che tu abbia funzionato –

102

Basta rimuovere i vostri fornitori

rm -rf vendor/* 
+0

Questo mi ha davvero aiutato dopo ore di ricerca e ricerca .... #helpful –

+8

non funziona per i componenti che non si installano nella directory 'vendor' .... –

+0

La soluzione più semplice per la maggior parte . Bello. +1 e questo dovrebbe davvero risolvere i problemi della maggior parte delle persone. – Ligemer

5

Quello che ho fatto:

  1. cancellati che determinata cartella della biblioteca
  2. composer update --prefer-source vendor/library-name

Si recupera nuovamente la libreria insieme con la sua git repo

0

non volevo eliminare tutti i pacchetti in vendor/ directory, ecco come ho fatto:

  1. rm -rf vendor/package-i-messed-up
  2. composer install nuovo opzione
Problemi correlati