2013-10-26 18 views
53

Używam szkieletu ZF2 i ma .gitignore, który uniemożliwia przypisanie bibliotek zewnętrznych do git. Podczas debugowania lubię iść i zmieniać rzeczy tu i tam w źródłach bibliotek, aby dowiedzieć się, jak działają. Jeśli byłyby one kontrolowane pod względem wersji, bardzo łatwo byłoby przywrócić je do pierwotnego stanu.Jak zmusić kompozytora do ponownej instalacji biblioteki?

Jak zmusić Composer do ponownej instalacji określonego frameworka, aby ponownie uzyskać niezmodyfikowaną kopię?

PS: Proszę nie sugerować usuwania pliku .gitignore, ponieważ jest tam z jakiegoś powodu; uniemożliwia dostęp do bibliotek mojej strony trzeciej do repozytorium mojej aplikacji. Zawsze mogę zainstalować je podczas zautomatyzowanego wdrożenia.

+2

Jednym rozwiązaniem byłoby usunięcie kompozytora. Zablokuj, a następnie uruchom kompilator install – vascowhite

Odpowiedz

33

Możesz użyć flagi --prefer-source, aby kompozytor mógł pobrać zewnętrzne pakiety z informacjami VCS (jeśli są dostępne). Możesz po prostu powrócić do pierwotnego stanu. Także, jeśli wydasz komendę poleceń composer update, wykryjesz wszelkie zmiany dokonane lokalnie i zapytasz, czy chcesz je odrzucić.

Twój plik .gitignore jest powiązany z twoim projektem głównym (szkielet ZF2) i zapobiega dirowi dostawcy (tam, gdzie są twoje biblioteki stron trzecich) w przejściu na twój własny VCS. Plik ignorowania nie ma związku z repozytorium git twojego dostawcy. Folder

+3

Początkowo sugestia -prefer-source nie działała, dopóki nie zorientowałem się, że muszę usunąć i ponownie zainstalować wszystkie biblioteki, aby działało zgodnie z zamierzeniami, a następnie "status kompozytora -v" przekazał mi informacje zmiany. – Julian

+0

Cieszę się, że to działa –

102

Wystarczy wyraźne twoi dostawcy

rm -rf vendor/* 
+0

To naprawdę mi pomogło po wielu godzinach poszukiwań i przeszukiwania .... #helpful –

+8

nie działa dla komponentów, które nie instalują się w 'dostawcy' dir .... –

+0

Najprostszym rozwiązaniem dla większości . Miły. +1 i to naprawdę powinno rozwiązać problemy większości ludzi. – Ligemer

5

Co zrobiłem:

  1. Usunięto tego folderu konkretnej biblioteki w
  2. composer update --prefer-source vendor/library-name

ona pobiera bibliotekę ponownie wraz z jego git repo

0

Nie chciałem, aby usunąć wszystkie pakiety w vendor/ katalogu, więc o to, jak to zrobiłem:

  1. rm -rf vendor/package-i-messed-up
  2. composer install ponownie
Powiązane problemy