سؤال

أقوم بالتحويل من مستودع CVS الحالي إلى مستودع SVN.يحتوي مستودع CVS على عدد قليل من الأقواس وأرغب في إعادة تسمية الفروع أثناء التحويل.

التحويل المطلوب كالتالي:

CVS branch         SVN branch
HEAD       ->      branches/branchX
branchA    ->      trunk
branchB    ->      branches/branchB
branchC    ->      branches/branchC

وهذا يعني أن CVS HEAD يصبح فرعًا عاديًا ويصبح CVS BranchA هو صندوق SVN.

ستكون مستودعات CVS وSVN موجودة على نفس جهاز Linux.

كيف يمكن انجاز هذا؟

قد يكون التحويل أيضًا حيث يصبح CVS BranchA هو قناة SVN ويتم تجاهل جميع فروع CVS الأخرى كافيًا.

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

المحلول

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

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

أوصي بتحويل المستودع باستخدام cvs2svn, ، بما في ذلك الفروع والعلامات.بمجرد أن يصبح المستودع في Subversion، يمكنك نقل الفروع والعلامات كما يحلو لك.يحافظ هذا أيضًا على تاريخ إعادة تسمية العلامات والفروع الفعلية، وهو ما قد يكون مثيرًا للاهتمام في سياق تاريخي لاحقًا.

نصائح أخرى

لقد مر وقت طويل منذ أن قمت بإجراء تحويل CVS -> SVN، وربما أطول منذ أن قمت بإجراء تحويل باستخدام بنية فرعية غير بديهية.نظرًا لأن SVN يمكنه التحرك حول أشجار الدليل بسهولة إلى حد ما، فيمكنك إجراء التحويل بالكامل أولاً، ثم فرز بنية الجذع/الفروع بالكامل داخل SVN لاحقًا.

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

فروع التخريب عبارة عن أدلة، لذا يمكنك فقط نقل الفروع بعد انتهاء الاستيراد ولن يتم فقدان أي سجل.

بعض المعلومات الإضافية لدعم الإجابة المقبولة:

لا يسمح cvs2svn بالتحويل من صندوق إلى فرع أو من فرع إلى صندوق

لذا فإن نقل الأشياء بمجرد تحويلك إلى svn هو أفضل طريقة للمضي قدمًا.

من الممكن نقل أدلة الجذع والفروع بعد التحويل، ولكن هذا قد يتطلب التزام SVN صريحًا بعد التحويل والذي سيبقى في سجل SVN الخاص بك، مما يجعل استكشاف السجل أكثر تعقيدًا بعض الشيء.

ولكن يمكنك بالفعل إخبار cvs2svn بتخزين الجذع والفروع لمسارات SVN التي تريدها باستخدام الأمر --symbol-hints=symbol-hints.txt خيار سطر الأوامر أو (إذا كنت تستخدم ملف خيارات للتحويل) SymbolHintsFileRule('symbol-hints.txt') قاعدة استراتيجية الرمز، حيث symbol-hints.txt هو ملف يحتوي على أسطر مثل ما يلي:

. .trunk. trunk branches/branchX .
. branchX branch trunk .

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

على الرغم من إمكانية التنقل بين الفروع بعد إجراء التحويل، فقد يكون من الأفضل إعداد ملف التكوين cvs2svn لتحديد الاسم الذي تريده بالضبط لكل فرع من فروعك الموجودة.إحدى فوائد ذلك هي أن FishEye ستفهم المخرجات بشكل أفضل كثيرًا.

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

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