لا تظهر تغييرات المجلد الفرعي لـ SVN Externals في سجل العرض (السلحفاة svn)
-
09-06-2019 - |
سؤال
تسمح لك عناصر SVN الخارجية بإظهار مجلد SVN كما لو كان في موقع آخر.الاستخدام الجيد لذلك هو وجود مجلد مشترك مشترك عبر جميع مشاريعك في SVN.
لدي مجلد /trunk/common في SVN والذي أشاركه عبر عدة مشاريع مختلفة.
مثال:
- مشروع 1 :/trunk/project1/depends
- المشروع 2 :/trunk/project2/depends
- المشروع 3 :/trunk/project3/depends
- المشروع 4 :/trunk/project4/depends
كل من هذه المجلدات التابعة فارغة، ولكن تم تحديد svn:external للإشارة إلى المجلد /trunk/common الخاص بي.
المشكلة هي عندما أعرض السجل داخل أي من المشاريع:/trunk/projectX/ لا يُظهر التغييرات من svn:externals.أنا أستخدم tortoise SVN كعميل SVN الخاص بي.
هل يعرف أحد كيفية تغيير هذا السلوك؟أرغب في أن يتضمن سجل العرض الخاص بـ /trunk/projectX أي تغييرات على أي svn:externals محدد أيضًا.
المحلول
هذا غير ممكن مع الإصدار الحالي من Subversion، بخلاف استدعاء سجل svn بشكل صريح على هدف الدليل الخارجي
يمكنك محاولة إصدار طلب ميزة على موقع Apache Subversion
نصائح أخرى
عند عرض السجل الخاص بمجلد ذو إصدار محلي، فإنه سيُظهر التغييرات المتعلقة بهذا المجلد المحدد.جهات خارجية فقط رابط إلى مجلد مختلف في المستودع.الشيء الوحيد الذي يمكنك تتبعه بشأن المراجع الخارجية، من مجلد يعتمد على هذا المشروع الخارجي، هو ملف تعريف المرجع نفسه.وذلك لأن المرجع هو خاصية تخريبية للمجلد التابع.
تخيل أن لديك التسلسل الهرمي الريبو التالي:
repo
myfirstproject
trunk
mysecondproject
trunk
mycommonlib
trunk
وذلك mysecondproject\trunk
يحتوي المجلد على ما يلي سفن: خارجي ملكية :
svn://mysrv/repo/mysharedlib@2451 sharedlib
الخروج من my Secondproject runk داخل مجلد جديد com. Secondproject سيتم إنشاء شيء مثل هذا على نظام الملفات الخاص بك:
secondproject Folder (refers mysecondproject/trunk)
sharedlib Folder (refers mycommonlib/trunk @ revision #2451)
استدعاء أمر "إظهار السجل" للسلحفاة من com. Secondproject سوف يظهر المجلد فقط com. Secondproject تتغير الملفات، وفي النهاية التغييرات التي حدثت على ملف سفن: خارجي خاصية المجلد.
للحصول على سجل التغيير للمشروع الخارجي، تحتاج إلى استدعاء "إظهار السجل" من المجلد الداخلي com.sharedlib, ، وهو أمر منطقي.
من تجربتي الشخصية، يتم الإبلاغ عن سجل الارتباطات الخارجية فقط إذا قمت في نفس الالتزام الذي قمت فيه بتغيير الملفات الخارجية، بتعديل ملف واحد فقط في المجلد "الداخلي".بهذه الطريقة يمكن لـ SVN استرداد السجل المناسب، والسجل من المجلد الخارجي أيضًا.
أعتقد أن استخدام الخطاف يجب أن يكون ممكنًا لتنفيذ آلية الالتزام التلقائي بملف موضعي في دليل العمل لكل التزام، وأيضًا إذا بدأ الالتزام من رابط خارجي.
الوداع
أعتقد أنه بعد Subversion 1.7 (الذي قدم مجلد .svn فرديًا في جذر WC) أصبح الأمر أكثر نظافة:بالنسبة للدليل الخارجي من نوع الدليل، فإن نسخة العمل الخارجية هي أ) مستقلة ب) نسخة عمل متداخلة لمستودع منفصل
>dir /B /S /AD
z:\subversion-troubleshoot-b\.svn
...
z:\subversion-troubleshoot-b\trunk
z:\subversion-troubleshoot-b\tags
z:\subversion-troubleshoot-b\trunk\lib
z:\subversion-troubleshoot-b\trunk\lib\.svn
...
z:\subversion-troubleshoot-b\tags\1.0.0
z:\subversion-troubleshoot-b\tags\1.0.1
z:\subversion-troubleshoot-b\tags\1.0.1\lib
z:\subversion-troubleshoot-b\tags\1.0.1\lib\.svn
...
ومرحاض الوالدين لا يحتوي على أي معلومات حول WC المتداخل (دير WC، تم إنشاؤه من/من المستودع، لاحظ وجود .svn dir مرتين فقط للخط الرئيسي)
>svn ls -R
readme.textile
tags/
tags/1.0.0/
tags/1.0.0/core_mod.txt
tags/1.0.1/
tags/1.0.1/core_mod.txt
trunk/
trunk/core_mod.txt
عندما يكون الجذع (والعلامات على التوالي) يحتوي على دليل فرعي lib باعتباره خارجيًا
تمت إضافة دعم للتعامل مع العناصر الخارجية للتحديث والالتزام، لأن هذا الدعم ينتج مستقلة وغير مرتبطة أوامر متتالية - ولأنه بدون هذا الدعم الخارجي ليس له أي معنى، يجب أن يكون سجل svn المجمع بطريقة أو بأخرى مجموع (بمبادئ غير معروفة، راجع للشغل)