2013-01-23 26 views
15

Byłem samotnym programistą w konkretnym projekcie, ale teraz ktoś inny dołączył jako współpracownik. Tylko ja na zdjęciu, aktualizacje bundler były gładkie i nigdy nie myślałem dwa razy o Gemfile.lock śledzonym przez Git.Jak radzić sobie z aktualizacjami bundlerów (Gemfile.lock) w kontekście współpracy?

Nowy współpracownik prowadził bundle install po klonowanie repo i Gemfile.lock został zaktualizowany w następujący sposób:

Gemfile.lock

@@ -141,7 +141,7 @@ GEM 
     rack-ssl (~> 1.3.2) 
     rake (>= 0.8.7) 
     rdoc (~> 3.4) 
-  thor (< 2.0, >= 0.14.6) 
+  thor (>= 0.14.6, < 2.0) 
    raindrops (0.10.0) 
    rake (0.9.2.2) 
    rdoc (3.12) 
@@ -164,7 +164,7 @@ GEM 
    sprockets (2.1.3) 
     hike (~> 1.2) 
     rack (~> 1.0) 
-  tilt (!= 1.3.0, ~> 1.1) 
+  tilt (~> 1.1, != 1.3.0) 
    thor (0.16.0) 
    tilt (1.3.3) 
    treetop (1.4.10) 
@@ -175,7 +175,7 @@ GEM 
    tzinfo (0.3.33) 
    uglifier (1.3.0) 
     execjs (>= 0.3.0) 
-  multi_json (>= 1.0.2, ~> 1.0) 
+  multi_json (~> 1.0, >= 1.0.2) 
    unicorn (4.3.1) 
     kgio (~> 2.6) 
     rack 

Ta zmiana została wepchnięta do nazwanego odgałęzienie głównego. Jak mam sobie radzić z tą zmianą?

Myślenie głośno: Czy scalam żądanie wyciągnięcia z GitHub? Czy po prostu wycofuję się z wcześniejszego źródła bez początkowego żądania wyciągania? Czy mogę uruchomić konkretną komendę bundler, aby zsynchronizować rzeczy z innym współpracownikiem Gemfile.lock? Czy jest coś, co inny współpracownik mógłby zrobić inaczej, tak, że nie spowodował aktualizacji żadnych klejnotów (raczej, aby pobrać klejnoty określone w istniejącym Gemfile.lock)? Jakie są najlepsze praktyki w tej sytuacji?

Odpowiedz

29

Gemfile.lock powinien być kontrolowany w wersji. Powinieneś zobowiązać się do wprowadzenia jakichkolwiek zmian. Kiedy ktoś (któremu ufasz) go zaktualizuje, powinieneś uruchomić bundle install, aby zainstalować klejnoty aktualnie zablokowane w Gemfile.lock.

Po prostu uruchomiony bundle install nie zaktualizuje istniejącego pliku Gem.lit. Aby to zrobić, musisz uruchomić bundle update.

Wszystko, co powiedzieliśmy, nie ma faktycznych zmian w wersjach w pliku Gemfile.lock. Wszystko, co zmieniło się, to kolejność argumentów dla kilku linii. Możesz bezpiecznie scalić te zmiany lub je zignorować; wynikowy plik Gemfile.lock będzie (funkcjonalnie) identyczny.

+2

Posiadanie Gemfile.lock pod kontrolą wersji jest uważane za najlepszą praktykę. Zapewnia to, że ten sam pakiet zależności zostanie zbudowany przy każdym instalowaniu aplikacji, niezależnie od tego, czy jest to inny programista działający na kodzie źródłowym, czy też pakiet dla serwera produkcyjnego. – ianpetzer

+0

upewnij się, że używasz tej samej wersji pakietu, aby wygenerowany plik Gemfile.lock wyglądał tak samo i nie generował różnych rzeczy, które byłyby fałszywym alarmem – hammady