كيفية ترحيل كافة عناوين URL في خصائص svn:externals عبر مستودع؟

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

سؤال

نحن بصدد نقل مستودعات SVN الخاصة بنا من جهاز إلى آخر، ومعها سيأتي اسم نطاق جديد للريبو الجديد.المشكلة هي أنه يوجد داخل المستودع الكثير من المراجع svn:externals لمشاريع أخرى داخل المستودع.على سبيل المثال، لدينا projectA، والذي يحتوي على خصائص svn:externals:

external/libraryA svn://oldserver.net/repo/libraryA
external/libraryB svn://oldserver.net/repo/libraryB

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

كيف لي أن تذهب عن القيام بذلك؟

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

المحلول

وكما أشرت إلى أنك لا تزال تريد أن تكون قادرة على التحقق من التنقيحات القديمة، والحل الوحيد هو في الحقيقة إلى "إعادة كتابة" التاريخ بأكمله (حل ذكر في وقت سابق D).

لقيام بذلك، يجب عليك:

1) تفريغ محتويات <م> كامل مستودع يستخدم <لأ href = "http://svnbook.red-bean.com/en/1.1/re31.html" يختلط = "noreferrer" عنوان = "تفريغ svnadmin"> svnadmin تفريغ :

$ svnadmin dump /path/to/repos > original-dumpfile
* Dumped revision 0.
* Dumped revision 1.
* Dumped revision 2.
* Dumped revision 3.

2) تحرير ملف تفريغ، لتغيير إس: الظواهر عناوين المواقع. على هذا هو الجزء الأكثر صعوبة : لافتراض مستودع يحتوي على البيانات الثنائية أيضا، فتح ملف تفريغ في محرر نص عادي سوف الأرجح الفاسد ملف التفريغ. لقد كان لي تجارب جيدة باستخدام ما يسمى ب "عرافة محرر"، على سبيل المثال في مجانية عرافة محرر XVI32

و3) إنشاء مستودع جديد وتحميل dumpfile تعديل فيه:

$ svnadmin create newrepos
$ svnadmin load newrepos < modified-dumpfile

لمزيد من المعلومات، قد تكون مهتمة ايضا في هذا الرابط:
http://svnbook.red-bean.com/en/1.1/ch05s03.html

ملحوظة: التخريب 1.5 الدعم أضاف فعلا ل <م> عناوين URL النسبية في إس: الملكية الظواهر، التي يمكن أن تمنع بالضبط هذا النوع من المشاكل في المستقبل:
http://subversion.tigris.org/svn_1.5_releasenotes.html#externals

نصائح أخرى

وكنت تستخدم SvnDumpTool للحصول على هذا. انها بالضبط ما كنت تبحث عنه:

svndumptool transform-prop svn:externals "(\S*) (|-r ?\d* ?)http://oldserver.net(/\S*)" "\2\3 \1" source.dumpfile source-fixed-externals.dumpfile

وهذا يحدد ما يصل كل الخارجية إلى 1.5 شكل التخريب ويستخدم عناوين URL النسبية.

وهكذا إس: الظواهر مثل:

external/libraryA svn://oldserver.net/repo/libraryA

وتصبح:

 /repo/libraryA external/libraryA

وباستخدام جذر الخادم عناوين URL النسبية.

اضطررت إلى نقل 12 نسخة عمل عبر 9 مستخدمين و4 عمليات نشر.لقد كان تغييرًا بسيطًا، حيث تم استبدال النطاق بعنوان IP، أي. thing.domain.net -> 192.168.0.1

مترقب svn relocate للتصرف كما هو موضح (اجتياز العناصر الخارجية المتداخلة) كتبت تعليمات DOS بسيطة للتشغيل في كل موقع:

for /D %G in (*) do ( cd ./%G & svn relocate http://thing.domain.net http://192.168.0.1 & cd ..)

لم يعمل هذا كما هو متوقع، فقط تم نقل المرحاض الأصلي.

كان الحل الذي توصلت إليه هو تحرير المستودعات نفسها (استخدمت متصفح Tortoise Repo) لتغيير موقع العناصر الخارجية.بعد هذا التغيير، كان تحديث الوالد الذي تم نقله هو كل ما هو مطلوب لجعل كل شيء في المسار الصحيح.

قد تكون فكرة جيدة أن تطلب من جميع مستخدمي Tortoise مسح سجل عناوين URL الخاصة بهم حتى لا يقومون عن غير قصد بإجراء عمليات باستخدام عنوان URL القديم (لا يزال موجودًا في بحث DNS):

Settings->Saved Data->URL history->Clear

وأنا تحريرها ملف تفريغ بلدي مع السادس ولكن اضطررت لاستخدام مفتاح "-b" لتعديل في الوضع الثنائي بحيث أي الأحرف التي يمكن أن تفسر على أن يكون خط النهايات لم تحصل على تحويلها.

ومنها مثلا. سادسا -b filename.dump

وبالإضافة إلى ذلك، لقد وجدت أنه إذا التغييرات طول URL الخاص، وهناك أطوال السلسلة التي كان أيضا إلى تعديل. على سبيل المثال، والنظر في إدخال يشبه هذا:

وعقدة مسار: جذع / SRC / تشمل

وعقدة نوعها: دير

وعقدة للعمل: تغيير

والدعامة المحتوى طول: 192

والمحتوى الطول: 192

وK13

وإس: الظواهر

وV 156

وMGL_ABC إس: // اسم_الملقم / dir1 / dir2

وMGL_DEF إس: // اسم_الملقم / dir1 / dir3

عند تعديل عناوين URL هذه، إذا كان طول التغييرات سلسلة، تحتاج إلى تغيير أيضا "192"، "192" و "156" لتتناسب مع طول الجديد. لقد وجدت صعوبة في حساب طول المطلق ولكن من السهل أن تجد الفرق.
على سبيل المثال، دعنا نقول URL 1 يصبح أقصر من 3 أحرف و URL 2 يصبح أقصر من 4 حروف. ثم، سيكون لديك لsubract '7' من كل من هذه الأرقام طول السلسلة الثلاثة.

هل يمكن أن:

وأ) تحقق من نسخة قديمة، وتغيير الخاص بك المضيفين الملف للإشارة إلى الاسم القديم إلى العنوان الجديد، ثم إس التحديث. في حالة تغيير مسار URL أيضا ... حسنا ثم ربما كنت كذلك:

وب) تأخذ من الوقت لكتابة السيناريو التي تجد الخصائص في (revision- العمر الحالي) نسخة العمل وتغيير عناوين المواقع هناك، دون ارتكابها. OR:

وج) تقديم مذكرة للمراجعة (-s) حيث كنت تحققت في قيم خاصية جديدة، تحقق من النسخة القديمة، والقيام بكل بساطة دمج تلك المراجعات (المفتى فقط تؤثر على خصائص) في نسخة العمل الخاص بك.

ود) أو، ربما، استخدم svndump تفريغ البيانات مستودع، سلسلة استبدال URL في تفريغ، ثم استعادته .. أنا لن أعطيك أي ضمان بأن يعمل حتى، -)

وكانت كل ما عندي من الظواهر في الدلائل المسمى flow. I إصلاح عناوين URL في الظواهر التي أجريتها مع هذا بطانة احد (باش شل):

for p in $(find -maxdepth 4 -name flow); do svn ps svn:externals "$(svn pg svn:externals $p/.. | perl -pe 's/^(\w+) svn\+ssh.*thing\.domain\.net(.*)/$2 $1/')" $p/..; done
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top