2009-10-28 11 views
9

हमारी टीम पूरी तरह से मर्ज-आधारित गिट वर्कफ़्लो का उपयोग करती है, और हम सभी टीम सदस्यों को एक दिन दोपहर सर्वर पर सभी काम करने के लिए कहने के लिए की संभावना पर चर्चा कर रहे हैं सर्वर रेपो को रिहा करने की एक शाम।सरल विलय से छुटकारा पाने के लिए स्वचालित गिट इतिहास को स्वचालित रूप से फिर से लिखना

मैं (सोचता हूं) मैं स्वचालित रूप से क्या करना चाहता हूं यह है कि जब तक सभी काम केवल शाखाओं के एक ही सेट पर होते हैं और समांतर कामों की संख्या किसी दिए गए थ्रेसहोल्ड से नीचे होती है, तो मैं श्रृंखला को पुन: पेश करना चाहता हूं और विलय प्रतिबद्धता को हटा दें। लेकिन मैं सुझावों के लिए खुला हूं?

कोई भी यह कैसे जानता है?

उत्तर

12

मेरी राय में आपको इसे "अच्छा लगने" के लिए इतिहास को फिर से लिखने के प्रलोभन से बचना चाहिए। वास्तव में कोई बात नहीं है। इतिहास, जैसा कि है, वास्तविकता का एक और सटीक प्रतिनिधित्व है और गिट के रिपोर्टिंग टूल सभी छोटे विलयों के साथ भी उपयोगी होने के लिए डिज़ाइन किए गए हैं।

यदि आप बहुत सारे विलय देखने में रुचि नहीं रखते हैं तो आप उन्हें कई रिपोर्टिंग कार्यों से दबा सकते हैं, उदा।

git log --no-merges 

आप क्या प्रस्ताव कर रहे हैं (रिबेसिंग की एक शाम, शायद सभी डेवलपर्स reset करने के लिए पैदा कर रहा) काम की खातिर काम बनाने की तरह लगता है।

+1

+1 - "वास्तविकता काटने"। गिट इतने विशाल टूलस्पेस और इतने सारे विकल्प प्रदान करता है, यह जानना मुश्किल हो सकता है कि स्मार्ट क्या है और क्या नहीं है। मैं काम के लिए काम नहीं करने में दृढ़ आस्तिक हूं, इसलिए शायद मैं आपकी सलाह के साथ रहूंगा। – krosenvold

5

मुझे यकीन नहीं है कि यह कितना आसान हो सकता है। यदि आप rebase -i करते हैं, तो यह सभी विलयों को अनदेखा करने का प्रयास करेगा, जो विवाद के बिना विलय के लिए सफल हो जाते हैं, लेकिन यदि कोई संघर्ष हुआ तो बंद हो जाता है और आपके लिए इंतजार कर रहा है।

यदि आप इसे rebase -i -p के रूप में आमंत्रित करते हैं, तो दूसरी तरफ, यह विलय को संरक्षित रखेगा, जो उपयोगकर्ता चाहते हैं जब आप वास्तविक विलय करते हैं, लेकिन अन्यथा पूरी तरह से इस बिंदु को याद करते हैं।

शायद दो आदेशों का कुछ अनुक्रम, केवल जब आप चाहें विलय को संरक्षित करते हैं, तो इस मामले में काम पूरा हो सकता है।

मुझे चार्ल्स से सहमत होना चाहिए, हालांकि, इतिहास को वास्तविकता को प्रतिबिंबित करने से यह "सुंदर दिखने" से कहीं अधिक मूल्यवान है। तथ्य यह है कि, एक प्रतिबद्धता दूसरे के ज्ञान के बिना बनाई गई थी, और स्रोत कोड के मामले में यह आपको बता सकता है कि कुछ गलत क्यों हो सकता है।

हमारी टीम एक विशुद्ध रूप से विलय आधारित Git कार्यप्रवाह

क्या हमेशा साथ --rebase (जैसे git pull -r) खींच साथ कुछ गड़बड़ है का उपयोग करता है? यदि आप एक फ्लैट टोपोलॉजी चाहते हैं, तो सबसे आसान तरीका यह है कि जब आप रीबेज कर सकते हैं तो विलय नहीं करना चाहिए।

इसके अलावा: आप कहते हैं कि अगर आप "मर्ज साफ है" तो आप केवल फ़्लैट करना चाहते हैं। मैं बस यहां अनुमान लगा रहा हूं, लेकिन मुझे लगता है कि डिफ़ॉल्ट प्रतिबद्ध संदेश में किसी नोट के अलावा तथ्य के बाद गिट रिकॉर्ड संघर्ष नहीं है, जो अभी भी वहां नहीं हो सकता है।

+1

+1 --rebase के साथ खींचने के लिए +1। अच्छे ध्यान के लिए – mskfisher

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