سؤال

وأنا آسف لذلك للحصول على اللقب مسألة فظيعة، ولكن سأحاول أن أشرح نفسي قليلا أكثر verbosely:

وأنا باستخدام بوابة (ولكن اعتقد ان برامج معينة لا يهم حقا في هذه الحالة) لمشروع البرمجيات بلدي. كما العديد من المشاريع، أنا والتخطيط على وجود مختلف الإصدارات. عندما يكون هناك بيان، كنت على الارجح تعيين ارتكاب علامة - على سبيل المثال "1.0". مرور الوقت، ويحصل اختراق الرمز، وأخيرا هناك الإفراج عنهم، مع علامة أخرى - وهذه المرة "2.0"

.

ويوم واحد، وأنا لاحظت وجود خلل خطير، وهذا موجود في كل الإصدارات 1.0 و 2.0، ويحتاج إلى إصلاح. لجعل الأمور صعبة (وربما أكثر واقعية أيضا)، لا أستطيع أن مجرد إصلاحه في الماجستير الحالي / الجذع ويفترض أن الجميع أن تستخدم ذلك، لأن هناك بعض التوافق الى الوراء في 2.0 مع 1.0 و الناس كسالى ودون 'ر تريد ترقيته.

وهكذا، ما يمكن أن يكون مخطط جيد أن يكون، من أجل دعم هذا النوع من السلوك: تكون قادرة على إجراء تغييرات في الإصدارات القديمة. يبدو بوابة لمساواة العلامات مع البيانات على مستوى ما، بسبب إخراج الأمر git describe ( "[latest tag]-[commits since the tag]-[current commit hash]"). أنا ربما لا يمكن تجنب علامات باستخدام تماما، ثم.

ويمكن أن أشعر أن مزيجا من العلامات والفروع سيكون فكرة جيدة، ولكن لسبب ما لا أستطيع أن التفاف رأسي حول تفاصيل مع هذا واحد.

هل كانت مفيدة؟

المحلول

وأنت بالتأكيد نريد أن ننظر إلى استخدام فرع لهذا الغرض. فروع دعم الجهاز الهضمي لهذا النوع من التطور بشكل جيد للغاية.

وعلى سبيل المثال، لديك نسخة خطية التاريخ قد تبدو هذه:

---A---B---C[1.0]---D---E---F[2.0]---G---H

وإذا وجدت خطأ في 1.0 وتريد إصلاحه، لا يمكنك ببساطة إدراج جديدة ارتكاب بين يرتكب C و D. لذلك، يمكنك إنشاء فرع من هذا القبيل:

---A---B---C[1.0]---D---E---F[2.0]---G---H[2.1]
            \
             C1---C2[1.1]

وتلزم C1 و C2 حل المشكلة في هذا الفرع، حيث يمكنك علامة الإفراج 1.1. الآن افترض أنك إجراء تغيير (G) في الإصدار 2.1 التي أردت backport إلى الإصدار 1.1 لجعل نفس التغيير هناك. يمكنك استخدام git cherry-pick للقيام بما يلي:

---A---B---C[1.0]---D---E---F[2.0]---G---H[2.1]
            \
             C1---C2[1.1]---G1[1.2]

ويرتبط الالتزام G1 لارتكاب G إلا أنها يمكن أن تنطبق على رأس الإصدار 1.1 بدلا من الإصدار 2.0.

في هذه الأمثلة، وفروع (تيارات إضافية للتنمية) هي الفكرة الرئيسية، في حين أن العلامات هي مجرد وسيلة مريحة لجعل اسم للإشارة إلى حالة كان المشروع في عند نقطة معينة في الوقت المناسب. بوابة يدعم طرق أخرى كثيرة من التلاعب الفروع، خصوصا مع الأمر git rebase قوية.

نصائح أخرى

وكنت في حاجة الى فرع - كنت ستفعل إصلاحات الصيانة والنشرات على الفرع الذي يبدأ في علامة الإفراج عنهم، في حين تواصل التطوير المستمر على (الماجستير) الفرع الرئيسي

.

ويبدو أنك قد أكثر من إجابة بالفعل عندما أذكر لكم الفروع والعلامات. العلامة هي هناك للاحتفال معين حتى (مثل إطلاق سراح) والفروع هي لتطور مواز. ويتم الحفاظ على نسخة معينة عموما على فرع ويمكنك cherrypick changesets مع معظم VCS الحالية لاستيراد إصلاح خلل معين من الرأس / الجذع إلى فرع والعكس بالعكس.

ويمكنك العمل من رئيس / صندوق / سيد (كل ما يسمى فرع التنمية "الحالي") ودمج بوجفيكسيس في مختلف فروع الصيانة. في أقرب وقت لديك إصدار رئيسي أو ثانوي القيام به، يمكنك إنشاء فرع للصيانة.

وهناك العديد من الطرق لتحقيق ما تريد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top