mercurial من التخريب: التحركات، إعادة تسمية والعلامات

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

سؤال

لدي إعادة تصليح Repo مع التصميم التالي:

svnrepo/projectA/trunk
svnrepo/projectA/tags
svnrepo/projectA/branches
svnrepo/projectB/trunk
svnrepo/projectB/tags
svnrepo/projectB/branches


التي أرغب في الانتقال إلى Repo Mercurial مع تخطيط منقح:
hgrepo / projecta.
hgrepo / pleopb.

ما هي أفضل طريقة للقيام بذلك؟ بعض أفكاري هي:

الخيار 1

إعادة ترتيب المسارات في التخريب (باستخدام SVN Move) إلى تنسيق متوسط:

svnrepo/trunk/projectA
svnrepo/trunk/projectB
svnrepo/tags/projectA
svnrepo/tags/projectB
svnrepo/branches/projectA
svnrepo/branches/projectB

ثم يحول الزئبق على svnrepo / trunk. هل نخلط هذا الاستيراد من الزئبق؟

الخيار 2HG تحويل كل من المشاريع / الجذع إلى ريبوس HG منفصلة. ثم دمجها في Repo HG واحدة (باستخدام HG Init، HG Pold -f Projecta، إلخ). أعتقد أن هذا سيخسر أسماء الفروع والعلامات في أول مشروع مستورد.

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

المحلول

في Mercurial، تخزين Bresbases غير المرتبط في نفس المستودع هو فكرة سيئة لأنها سوف

  • معقدة دمج. سوف تعتمد الدمج على التغييرات التي تم إجراؤها على الكل المشاريع، بدلا من المشروع الذي تحاول دمجه.
  • تسبب تخزين وسحب النفقات العامة - mercurial، بقدر ما أعرف، لا يدعم التحقق من الدلائل الفرعية فقط من مستودع. يجب عليك تفرع جميع المشاريع في وقت واحد.

الحل هو تحويل مستودع التخريب الفردي إلى مستودعات ذهبية متعددة. معظم أدوات التحويل تدعم هذا.

نصائح أخرى

يجب أن يكون كل مشروع في مستودع HG الخاص به (لتكون قادرا على الحصول على مشروع معين أو علامة فقط).

تذكر من الدليل الذي تراه في التخريب (الجذع والعلامات والفروع) لن يكون موجودا في أي حديثة (د) VCS، حيث توجد فروع وعلامات هي مواطن من الدرجة الأولى (أي بيانات meta التي تديرها الأداة مباشرة)، على عكس ذلك دليل الناتج عن نسخة رخيصة (في SVN).

هذا يعني عند تحويل مستودع SVN، يجب ألا تخزن مباشرة أي دليل "Trunk" أو "Tags" أو "Branches" في تاريخ Repo HG.

يجب عليك استخدام أ أداة مثل hgsubversion لاستيراد SVN Repo (مثل "Repo / Projecta" فقط) في ريبو HG مخصص ل Projecta. سوف تبقي علامات وفروع مشروع Orignal SVN وتحويلها إلى كائنات HG.
من وثائقها:

جميع التحديثات باستخدام hgpullsvn مصنوعة في الفرع المسمى من العنصر الأخير من عنوان URL SVN (على سبيل المثال، إذا كان عنوان URL SVN svn://server/myproj/branches/feature-ZZZ, hgpullsvn سوف تنشئ واستخدام الفرع المسمى 'feature-ZZZ')


إذا كنت لا تريد "تحويل" ولكن "مزامنة"، تونفا نوصي hgsubversion, على الرغم من أنه "موجود حاليا في حالة تدفق بسبب إعادة الكفاءة الثقيلة":

الآن هو ليس جاهز للاستخدام الإنتاج. يجب أن تستخدم هذا فقط إذا كنت مستعدا للاختراق، وتذهب للغوص إلى Interals من Mercurial و / أو التخريب.

حيث hgsvn السماح أيضا ببعض المزامنة من خلال hgpushsvn و hgpullsvn... أود أن تلتصق hgsvn الى الان.

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