2012-03-17 13 views
5

Pracuję z symfony2 przez jakiś czas i naprawdę nie mam właściwego sposobu pracy z dostawcami.Zrozumienie symfony2 usuwa

Więc tutaj jest to, co robię:

mam deps i deps.lock pliki w moim git, a ja zignorować cały sprzedawców folder. Teraz, kiedy instaluję aplikację na nowym serwerze, robię php bin/vendors install, aby ściągnąć dostawców na serwer. Dostaję wiadomość, że muszę użyć install --reinstall i zrobić to.

Z mojego punktu widzenia, wersje powinny być dokładnie takie same, jak na mojej maszynie programistycznej, ponieważ oba deps i deps.lock są takie same. Ale wydaje się, że deps.lock zostaje (częściowo) zignorowany?

Istnieje również polecenie vendors update, którego odczyt nie powinien być używany. BUt Nie wpadłem na pomysł, co to naprawdę robi.

Więc jestem trochę zdezorientowany, od tego, jakie polecenie powinno być używane, kiedy i co ma robić. Może ktoś może rzucić trochę światła na ten temat! Szczególnie interesuje mnie poprawny sposób używania poleceń dostawców zarówno lokalnych, jak i na serwerze, dzięki czemu dostawcy są we właściwej wersji na obu systemach!

+0

Częściowo związane z pańskim pytaniem - proponuję rzucić okiem na [capifony] (http://capifony.org), która zawiera bardzo przyjemny sposób zarządzania wdrożeniami na różnych komputerach przy zarządzaniu 'deps'. – leek

+0

Próbowałem capyfony, ale szczerze mówiąc to po prostu nie działa dla mnie. Nie podoba mi się sposób, w jaki zarządza rzeczami i ma inny przepływ pracy przy użyciu git. – Sgoettschkes

Odpowiedz

4

zainstalować i aktualizować zarówno pobrać nowego kodu z repozytorium git określonych w pliku deps

zainstalować kontrole dla mieszań w ty deps.lock plików dla każdej biblioteki. Jeśli coś znajdzie, kasuje zatwierdzenie odpowiadające hashowi. Jeśli nie, kasuje tag lub gałąź w deps.lock, jeśli jest określony i tworzy wpis w pliku deps.lock, aktualizacja jest przydatna, gdy chcesz zaktualizować nową wersję symfony (lub dowolna biblioteka w pliku deps). Jeśli pewnego dnia masz ochotę na aktualizację, możesz przeczytać this post I wrote about the update process.

Podsumowując, zawsze korzystam z aktualizacji na wszystkich komputerach i zawsze staram się określać wersję dla każdej biblioteki, aby środowisko produkcyjne nie zostało niespodziewanie zaktualizowane do wersji niestabilnej.

0

masz pobrać Standard Edition, który już zawiera sprzedawców, dlatego wyświetla ten komunikat, aby użyć „instalacja - ponowna”

osobiście wykonane ​​php bin/install-reinstall dostawców w projekcie deployement

+0

Nie, zawsze przy użyciu wersji bez dostawców. Dostawcy również nie są dodawani do mojego repozytorium git i kiedy sprawdzałem to na moim serwerze, tam też nie ma żadnego folderu dostawców. – Sgoettschkes

4

install --reinstall jest taka sama jako install, ale usuwa także zawartość folderu dostawcy przed rozpoczęciem instalacji.

vendors update aktualizuje wszystkich dostawców do najnowszej wersji lub wersji określonej w pliku deps i aktualizuje plik deps.lock. Ale rzadko go potrzebujesz, nie wiesz, gdzie czytasz "nie powinno się używać".

Jeśli spojrzeć wewnątrz pliku sprzedawców, można zobaczyć tę linię:

if (is_dir($vendorDir.'/symfony') && !is_dir($vendorDir.'/symfony/.git') && !in_array('--reinstall', $argv)) 
...Try to run ./bin/vendors install --reinstall... 

więc masz katalogu vendor/symfony bez .git w nim.

+1

+1, myślę, że zdanie "nie powinno być używane" zostało przeczytane tutaj: http://symfony.com/doc/current/cookbook/workflow/new_project_git.html#cookbook-managing-vendor-libraries, ale oznacza to coś więcej na przykład: "nie będziesz tego potrzebować" – greg0ire