مزامنة SVN إلى Mercurial باستخدام Svnsync & Hg Convert - Misses SVN: Externals؟
-
27-09-2019 - |
سؤال
لقد قمت بإنشاء مرآة زئبقية لمستودع SVN (باستخدام هذا البرنامج التعليمي: http://oreilly.com/opensource/excerpts/opensource-mercurial/migrating-to-mercurial.html). يعمل المزامنة بشكل رائع ، إلا أنني لاحظت أنه لا يلتقط مستودعًا خارجيًا يتم الإشارة إليه في ريبو SVN الرئيسي ...
أود من الناحية المثالية أن أكون قادرًا على سحب كل شيء باعتباره ريبوًا واحدًا إلى الزئبق (جنبًا إلى جنب مع التغييرات إذا كان ذلك ممكنًا).
ما لست متأكدًا منه هو: هل هو قيود خارجي مفقود على SVNSYNC ، أو قيود على الزئبق؟
هل هناك أي طريقة يمكنني إجبارها على المزامنة الخارجية أيضًا ، في نفس الريبو الزئبقي؟
أفكر في أن الحل الجيد هو إعداد عملية المزامنة مرة أخرى ، من أجل الخارج. قم بإنشاء شوكة من مرآة HG الحالية ، وقم بمزامنة الخارجي في شوكة المرآة الزئبق.
المصيد مع ذلك هو أن صندوق الخارجي يهدف إلى الذهاب إلى مقلع فرعي للمرآة الأولى ، فكيف يمكنني تكرار ذلك باستخدام التحويل؟ أشك في أنني أستطيع أن أقول التحويل إلى الاستيراد إلى مقلع فرعي ...
المحلول
هل المفقود الخارجي هو قيود على svnsync أو قيود على الزئبق؟
svnsync
يستخدم لإنشاء مرآة لمستودع SVN. وهذا يشمل أي svn:externals
الخصائص. لذلك يجب أن يكون قيدا hg convert
.
لاحظ أنك لا تحتاج حقًا إلى إنشاء مرآة svnsync
. توصي المقالة بذلك فقط لأن وجود نسخة محلية قد يؤدي إلى تسريع عملية التحويل.
هل هناك أي طريقة يمكنني إجبارها على المزامنة الخارجية أيضًا ، في نفس الريبو الزئبقي؟
من الشائع أن يحتوي مستودع SVN على مشاريع متعددة ذات صلة فضفاضة ، ولكل منها فروعها وعلاماتها الخاصة. لكن الزئبق لا يعمل بهذه الطريقة: عندما تتفوق ، فأنت تتفوق على كل شيء في المستودع. يجب عليك إنشاء مستودع ميركوريال منفصل لكل مشروع في SVN يحتوي على جذع/فروع/علامات. هذا النهج مختلف هو على الأرجح السبب hg convert
يتجاهل العوامل الخارجية ، حتى لو كانت في نفس مستودع SVN.
هناك ما يعادل svn:externals
في الزئبق يطلق عليه "Subrepositories". بدلاً من وجود واحد أو أكثر svn:externals
الخصائص ، لديك واحد .hgsub
ملف مع محتوى مماثل في جذر مشروعك. يجب عليك أولاً تحويل كل مشروع SVN إلى مستودع زئبقي منفصل ، ثم توصيله بالجروح الفرعية. انظر صفحة الويكي الزئبقية للجروح الفرعية لمزيد من التفاصيل.