رسالة خطأ النطاقات المفقودة عند إعادة دمج فرع في صندوق الاتصال في Subversion 1.5
-
20-09-2019 - |
سؤال
أحاول إعادة دمج فرع التطوير في صندوق السيارة الموجود في مستودع Subversion 1.5 الخاص بي.لقد قمت بدمج كافة التغييرات من الجذع إلى فرع التطوير قبل هذه العملية.الآن عندما أحاول إعادة دمج التغييرات من الفرع أحصل على رسالة الخطأ التالية:
Command: Reintegrate merge https://dev/svn/branches/devel into C:\trunk
Error: Reintegrate can only be used if revisions 280 through 325 were previously
Error: merged from https://dev/svn/trunk to the reintegrate
Error: source, but this is not the case:
Error: branches/devel/images/test
Error: Missing ranges: /trunk/images/test:280-324
...
ثم تستمر الرسالة في الشكوى من بعض المجلدات في مشروعي.ولكن عندما أحاول دمج التغييرات من الجذع إلى فرع التطوير مرة أخرى، يخبرني TortoiseSVN أنه لا يوجد شيء لدمجه (حيث قمت بالفعل بدمج جميع التغييرات من قبل):
Command: Merging revisions 1-HEAD of https://dev/svn/trunk into C:\devel, respecting ancestry
Completed: C:\devel
أحاول اتباع التعليمات من هنا: http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html, ، ولكن لا يوجد شيء عن حل مثل هذه المشكلة.
أيه أفكار؟ربما ينبغي عليّ فقط حذف صندوق السيارة ثم عمل نسخة من فرعي؟لكنني لست متأكدًا حقًا مما إذا كان آمنًا.
أنظر أيضا
svn merge with --reintegrate يشكو من النطاقات المفقودة ولكن معلومات الدمج تبدو صحيحة
المحلول
يجب عليك دمج المراجعات R280 إلى R324 من Trunk إلى فرعك أولاً.
يبدو أنك قمت بالفعل بدمج R325 في فرعك ، ومع ذلك -يجب أن تحصل على الاندماج الكل انحراف إلى آخر مراجعة لك. يجب ألا يكون هناك فجوة. إذن هنا قليلاً:
+----------------------> /branches/devel
/ / \<--merge not working!
--------/-------+--+---+-----+---------> trunk
| \ | / |
280 \ V / 325
V
missing sync merges from trunk to branch
أعتقد أن هذا هو بنية فرعك ، لذلك تحتاج إلى مزامنة جميع التغييرات من الجذع إلى فرعك. لقد قمت بدمج R325 فقط ، لذا فقط دمج R280-R324 وبعد القيام بذلك ، يجب أن تكون بخير لاستخدامه-الاندماج
نصائح أخرى
لقد ناضلنا مع هذه القضية لبضعة أسابيع وأخيراً تم حلها.
في حالتنا ، عملنا على فرع تم دمجه مع جميع مراجعات الجذع على أساس يومي. عندما حاولنا إعادة دمجه (دمج مرة أخرى إلى الجذع) حصلنا على هذا الخطأ. عندما حاولنا دمج النطاقات المفقودة لفرعنا ، تلقينا رسالة مفادها أنه لا يوجد شيء ندمجه. لقد حدث ذلك في العديد من الفروع غير ذات الصلة ومع ملفات ومجلدات مختلفة.
كان الحل هو إضافة النطاقات المفقودة إلى خاصية SVN: MergeInfo للملف أو المجلد في فرعنا.
لكل "نطاقات مفقودة: المسار: Revision_Range" في الرسالة التي تلقيتها:
- تحرير SVN: خاصية MergeInfo في ملف/مجلد المذكورة في الفرع المدمج
- قم بإلحاق ما يلي: سلسلة في نهاية قيمة الخاصية (على سبيل المثال/trunk/الصور/الاختبار: 280-324)
- احفظ خاصية SVN
ارتكب كل التغييرات وإعادة الاندماج مرة أخرى
لقد واجهت هذه المشكلة ، وكان سببها في النهاية خصائص SVN الخاطئة ضد مجلد في فرعتي.
كان الحل سهلاً - لقد اندمجت من الجذع إلى فرعتي باستخدام رقم المراجعة المحدد الذي تم الإبلاغ عنه على سبيل المثال
ثم تحديد لتسجيل الدمج على سبيل المثال فقط
جعل هذا الإجراء بشكل صحيح فرعتي متواصلة مع Trunk ، وقد عملت إعادة دمج الفرع اللاحق إلى Trunk بنجاح ، دون رسالة خطأ في النطاقات المفقودة.
تجنبت هذه التقنية أي تحرير يدوي لأي SVN: خصائص MergeInfo مقابل أي ملفات/مجلدات.
توقفت عن الحصول على هذه المشكلات عندما بدأت في استخدام خيار -r إلى أمر SVN Merge ولم أحاول القيام بالاندماج حتى بعد أن اندمجت بدونه. أنا أستخدم SVN 1.6.1.
هذا ما أفعله:
1. عند الاندماج من فرع إلى جذع أو جذع إلى فرع ، أستخدم خيار -r مثل هذا:
cd branchWorkArea/topDir
svn merge -r<branchPoint>:HEAD [otheroptions] svn://svn/project/trunk/topDir
عندما قمت بحل أي تعارضات واختبار الكود الخاص بي ، ألتزم بالاندماج في الفرع ثم دمج الفرع على الجذع باستخدام نفس الخيارات الأساسية (خاصة -RbranchPoint: Head)
عندما يتم اختبار الجذع وارتكابه ، أستخدم خيار -الاندماج في الإغلاق. تأكد من استخدام خيار -rbranchPoint: رئيس عليه أيضًا.
للحصول على خيارات أخرى ، أستخدم دائمًا
-تعمق اللانهاية (الافتراضية إلى اللانهاية في 1.6.2 ولكن ليس من قبل)
-x -b -x -w -ignore -eol -style
ربما ، لقد كنت محظوظًا ولكن يبدو أن الأمور بالتأكيد تعمل بشكل أفضل.
للعثور على نقطة الفرع لفرع ما ، يمكنك القيام بسجل SVN-إيقاف التشغيل ، ثم انظر إلى إلى آخر عمليات إعادة التنفيذ-ستكون نسخة SVN التي أنشأت الفرع.
للقيام بذلك على Linux ، أفعل شيئًا كهذا:
SVN LOG-STOP-ON-COPY SVN: // SVN/Project/Trunk/Topdir |
جريب '^r' | ذيل -1 | sed -e 's/^r // 1' -e' s/.*// g '
هذا يجب أن يطبع رقم المراجعة للنقطة الفرعية.
حظا طيبا وفقك الله
هذه ليست إجابة بل سؤال توضيحي.
رسالة الخطأ الخاصة بي هي:
Reintegrate can only be used if revisions 2669 through 3403 were previously merged from
https://../schemas
to the integrate source, but this is not the case:
trunk/schemas:
Missing ranges:
../schemas:2673,2682,2720,2736,2878,2960,3003,3057
لقد قمت بدمج المراجعات باستخدام الحل الذي يوفره Greg Trevellick ، ولا يزال يحصل على رسالة الخطأ.
عندما أفتح خاصية svn:mergeinfo بعد إجابة @pako في مجلد المخططات، يبدو المحتوى كما يلي
/branches/repos_develop_os/trunk_branch-os/schemas:3329
/trunk/schemas:2669-2673,2682,2720,2736,2878,2960,3003,3057
لست متأكدًا من كيفية تعديل هذا المحتوى.يبدو أن النطاقات المفقودة كلها موجودة.
لقد واجهت هذه المشكلة وما نجح بالنسبة لي هو أولاً وقبل كل شيء ، مزامنة الفرع مع الجذع ، بحيث يمكن للفرع الحصول على آخر التحديثات من الجذع. بعد ذلك ، حاولت إعادة دمج الفرع إلى الجذع وعملت بشكل جيد.