كيف يمكنني استخراج مجموعة من مستودع SVN الخاص بي إلى واحدة جديدة؟

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

  •  05-09-2019
  •  | 
  •  

سؤال

لدينا مستودع التخريب مع دليل واحد هو:

  • ليس حقا في حاجة إلى مراجعة المراجعة وراء قدرات RCS
  • لم يتم إصدارها بالتزامن مع أي شيء آخر في المستودع
  • تعديل حوالي ست مرات بقدر ما تبقى من المستودع

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

ما هي أفضل عملية لذلك؟ إذا تحدث فرقا، فسيتم استضافة مستودع SVN على (... الشيكات ...) آلة FreeBSD.

تجدر الإشارة إلى أنه بينما أحتاج إلى الاحتفاظ بسجل الإصدار في مستودع جديد، فلا حاجة إلى طمس المحتوى في القديم؛ يمكن أن تجلس هناك فقط، لأن كل ما يهمني.

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

المحلول

يمكنك استخدام تفريغ svnadmin و تحميل svnadmin لإنشاء مستودع جديد من واحد الأصلي؛ ثم انسخ الدليل الذي لا يصلح حقا إلى مخططك إلى موقع أفضل، ثم حذف كل شيء آخر. في المستودع الأصلي، ستحذف الدليل غير المناسب. هذا يبقي كل التاريخ سليم، وينتهي بك الأمر مع مستويين.

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

نصائح أخرى

الطريقة الموصى بها للقيام بذلك هي استخدام svnadmin dump, ، ثم تصفية ملف التفريغ مع svndumpfilter أداة (انظر svnbook.).

على سبيل المثال، كان لدي ريبو مع دليل المستوى الأعلى المسمى "نموذج"، الذي أردت الانتقال إلى ريبو الخاص به:

svnadmin dump my_orig_repo | svndumpfilter include --drop-empty-revs --renumber-revs Model >model_only.svndump
svnadmin load my_model_repo < model_only.svndump

التي تنشئ الريبو الجديد مع الدليل الفرعي النموذجي فقط.

لإزالةها من المستودع الأصلي، يمكنك ببساطة القيام بذلك svn rm. وبعد سيؤدي ذلك إلى إزالته من أحدث إصدار من Repo، وهو أبسط طريقة.

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

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

التي قد تكون أو لا تكون طريقة "الأفضل" للقيام بذلك ...

لا أعرف إذا فهمت هذا بشكل صحيح، ولكن هناك حل لطيف لذلك. إذا كان مستودعك الأصلي في SVN: // مجال، ومجلد تستخدم الكثير يسمى "المجلد"، وأعتقد أنه يمكنك ببساطة تنفيذ الأمر التالي: svn co svn://domain/folder لتوقيف فقط هذا المجلد.

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