15

मैं एक विशेष परियोजना पर एक अकेला प्रोग्रामर किया गया है, लेकिन अब किसी और सहयोगी के रूप में शामिल हो गया है। साथ बस मुझे चित्र में, bundler अपडेट चिकनी किया गया है, और मैंने कभी नहीं सोचा दो बार Gemfile.lock के बारे में Git द्वारा लगाया जा रहा है।सहयोगी संदर्भ में बंडलर अपडेट (Gemfile.lock) से कैसे निपटें?

नए सहयोगी रेपो क्लोनिंग के बाद bundle install भाग गया, और इस प्रकार Gemfile.lock अद्यतन किया गया था:

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 

यह परिवर्तन एक नामित शाखा बंद मास्टर में धकेल दिया गया था। मुझे इस बदलाव से कैसे निपटना चाहिए?

जोर से सोच रहा है: क्या मैं गिटहब पर पुल अनुरोध मर्ज करता हूं? क्या मैं पहले बिना पुल अनुरोध के अपस्ट्रीम से खींचता हूं? क्या मैं अन्य सहयोगी के Gemfile.lock के साथ चीजों को सिंक करने के लिए एक विशेष बंडलर कमांड चलाता हूं? वहाँ कुछ अन्य सहयोगी अलग ढंग से (बस जवाहरात मौजूदा Gemfile.lock में निर्दिष्ट डाउनलोड करने के लिए नहीं बल्कि,) किया जा सकता है, ताकि वे किसी भी रत्न को अद्यतन करने का कारण नहीं है? इस स्थिति के आसपास सबसे अच्छा अभ्यास क्या हैं?

उत्तर

29

Gemfile.lock संस्करण नियंत्रित किया जाना चाहिए। आपको इसमें कोई बदलाव करना चाहिए। जब कोई (जिसे आप भरोसा करते हैं) इसे अपडेट करते हैं, तो आपको Gemfile.lock में लॉक किए गए रत्न इंस्टॉल करने के लिए bundle install चलाएं।

बस bundle install एक मौजूदा Gemfile.lock अपडेट नहीं होगा चल रहा है। ऐसा करने के लिए, आपको bundle update चलाने की आवश्यकता है।

सभी ने कहा कि, आपके Gemfile.lock में संस्करणों में कोई वास्तविक परिवर्तन नहीं हैं। जो कुछ बदल गया वह कुछ पंक्तियों के लिए तर्कों का क्रम था। आप उन परिवर्तनों को सुरक्षित रूप से मर्ज कर सकते हैं या उन्हें अवहेलना कर सकते हैं; परिणामी Gemfile.lock (कार्यात्मक रूप से) समान होगा।

+2

करने के बाद संस्करण नियंत्रण के तहत अपने Gemfile.lock सबसे अच्छा अभ्यास माना जाता है। यह सुनिश्चित करता है कि निर्भरता का एक ही बंडल बनाया जाएगा जहां भी आप अपना एप्लिकेशन इंस्टॉल करते हैं, भले ही यह स्रोत कोड पर काम करने वाला कोई अन्य डेवलपर हो या आपके उत्पादन सर्वर के लिए बंडल हो। – ianpetzer

+0

सुनिश्चित करें कि आप दोनों एक ही बंडलर संस्करण का उपयोग करें ताकि जेनरेट किया गया Gemfile.lock समान दिखता है और चीजों को अलग-अलग उत्पन्न नहीं करता है जो एक झूठा अलार्म प्रतिबद्ध होगा – hammady

संबंधित मुद्दे