متى أتحقق من الجذع مقابل المشروع الكامل في ريبو SVN؟

StackOverflow https://stackoverflow.com/questions/3145282

سؤال

حصلت على سؤال (نأمل صغير) بخصوص SVN والتحقق من repos. في الأساس ، أرى دروسًا متعارضة ومقترحات بشأن ما يجب التحقق منه ومتى. سيقول البعض:

SVN CO http://my.repos.com/project مشروعي

... بينما يقول آخرون:

SVN CO http://my.repos.com/project/trunk مشروعي

متى أرغب في الحصول على الجذع مباشرة مقابل المشروع بأكمله؟ في الماضي لم أواجه أي مشكلة في أي منهما ، لكنني لست متأكدًا مما إذا كان هناك سيناريوهات يكون فيها أحدهما أفضل للآخر.

الأفضل.

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

المحلول

هناك بضع نقاط أخرى يجب ملاحظتها حول هذا الموضوع.

  1. ال tags تحتوي الشجرة (وعادة ما تكون شجرة) على لقطات غير قابلة للتغيير افتراضيًا من الكود الخاص بك في وقت محدد ؛ هذا ليس شيئًا تريد تغييره ، لأن معظم عمليات النشر ستعتمد على العلامات
  2. يشكو معظم عملاء التخريب إذا حاولت ارتكاب تغييرات في tags شجرة ، بدلاً من مجرد النسخ فيها
  3. لمعظم الأغراض ، trunk هي حالة خاصة من الدلائل تحت branches; ؛ الفرق الوحيد الوحيد هو أنه من المتوقع أن يحتوي على مسار التطوير الرئيسي

عادةً ما لا يوجد سبب وجيه للتحقق من المشروع بأكمله ، كما أشار الآخرون ، لأن معظم الوقت تعمل فقط على الجذع وفروع أو فرعين ، ويمكن للمشروع بأكمله تناول كمية كبيرة من القرص. غالبًا ما يكون "فرع" التطور الرئيسي هو الشيء الوحيد الذي تحتاجه.

إليك مثال في العالم الحقيقي. يقوم فريقنا بكل تغييرات الكود مقابل الجذع. عندما نحتاج إلى إصدار alpha (قبل الإكمال) ، نقوم فقط بتمييز الجذع. بمجرد أن نضغط على "رمز كامل" لإصدار معين ، نقوم بإنشاء فرع تجميد الرمز ، حيث نقوم بجميع تغييرات الإصدار لدينا. يتم وضع علامة على إصدارات Beta و RC و GA من هذا الفرع. إذا كنا بحاجة إلى تصحيح إصدار GA ، يتم إجراء التصحيح ضد الفرع ودمجه على الجذع. وبهذه الطريقة ، لا داعي للقلق بشأن تسرب التعليمات البرمجية الأحدث في GA التي تم اختبارها والموافقة عليها إذا كنا بحاجة إلى تصحيح شيء محدد. كما يتيح لنا البدء في العمل على الإصدار التالي من البرنامج بمجرد تجميد الرمز.

أيضًا ، إذا كان هناك "مشروع جانبي" خارج نطاق الجذع ، فيمكنك إنشاء فرع لذلك ودمجه عندما تكون جاهزًا.

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

أيضا ، مجرد نقطة حول إدارة المستودعات كما ذكرها @humble_coder - معظم أدوات التخريب سهلة الاستخدام عندما يتعلق الأمر بإدارة الفرع/العلامات. على سبيل المثال ، يحتوي TortoisesVn على متصفح مستودع يسمح لك بنسخ الأشياء حول (إنشاء الفروع والعلامات) بسهولة تامة ، وحتى أداة خط الأوامر SVN يمكن استخدامها لفعل نفس الشيء مثل العملية الذرية (لدينا بالفعل برنامج نصي هذا ينشئ إما علامات ألفا أو فرع تجميد الكود أو علامات الإصدار بعد التجميد).

أتمنى أن يساعدك هذا!

نصائح أخرى

عادةً ما يحتوي مستودع التخريب على 3 أدلة رئيسية:

  1. الفروع
  2. العلامات
  3. جذع

Trunk هو لأحدث فرع من الكود.

عادة ما يتم إنشاء الفروع من أجل تطوير ميزة محددة لا تريدها بعد في الجذع.

العلامات مثل حفظ نقاط الجذع.

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

على سبيل المثال ، إذا تم وضع علامة على كل إصدار رمز ، فستحصل على الرمز المصدر من جميع الإصدارات السابقة!

آمل أن يكون هذا سيساعدك

جيروم فاجنر

يعتمد ذلك على كيفية وضع مستودعك ، ولكن عادةً ما يكون لديك هذا الهيكل:

/trunk
/tags
/branches

داخل كليهما tags و branches, ، قد يكون لديك عدة نسخ من المشروع (اعتمادًا مرة أخرى على كيفية استخدام المستودع).

إذا تم وضع مستودعك على هذا النحو ، فقد قمت بالخروج /, ، سوف ينتهي بك الأمر بعدة نسخ من الكود (العلامات والفروع) ، والتي قد لا يكون من المفترض أن تلمسها (العلامات ، على سبيل المثال).

إذا قمت بالخروج /trunk بدلاً من ذلك ، ستتحقق فقط من الإصدار الذي تعمل عليه حاليًا ، وهو ما تريده عادة.

لن أتغلب على المشروع بأكمله. عادة ، أنا مهتم فقط بفرع واحد في وقت واحد ، وربما اثنان ، وأحيانًا ثلاثة. لقد قمت دائمًا بالتحقق من الجذع وتحديثه. إذا كنت بحاجة إلى التحقق من تشغيل علامة تم إصدارها (ربما للتحقيق في الأخطاء) ، أتحقق من ذلك والتحقيق والحذف. الفروع المخزنة تحت branches عادةً ما يكون لديك فترة اهتمام أقصر بكثير ، أي أنها تم إنشاؤها واستخدامها بشكل محموم لفترة قصيرة ومن ثم لم يتم لمسها مرة أخرى.

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