هل تريد الاستيراد إلى نفس دليل مستودع Subversion عدة مرات؟

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

  •  20-08-2019
  •  | 
  •  

سؤال

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

بدلاً من ذلك، كان بإمكاني:

  1. حذف الدليل، ثم يستورد.لم أختبر هذا، ولكن بصرف النظر عن أنه يبدو غبيًا، فمن المحتمل أيضًا أنه يحذف سجل المراجعة للملفات المعنية، مع اعتبار الملفات الجديدة مختلفة تمامًا.
  2. تحقق من وجود الدليل، وتحقق منه، واحذف الملفات التي لم تعد موجودة في المصدر الأساسي عن بعد، ثم استبدل الباقي والتزم.من المحتمل أن ينجح هذا، لكنه يبدو عرضة للخطأ وصعبًا بلا داع.

هل افتراضاتي صحيحة أن حذف الملفات سيؤدي إلى وضع علامة على الملفات الجديدة بنفس الطريقة التي يتم بها حذف الملفات مختلف الملفات؟هل هناك طريقة أسهل من الطريقة الثانية؟

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

المحلول

لسبب واحد)، لن يتم حذف سجل المراجعة، ولكن سيتم التعامل مع الملفات الجديدة على أنها غير مرتبطة تمامًا بالملفات القديمة.لا يزال بإمكانك استعادة الملفات القديمة بالرغم من ذلك.

لـ 2)، ستكون هذه هي الطريقة الموصى بها.ولكن بعد "حذف" الملفات الموجودة وإضافة الملفات الجديدة، يتعين عليك أيضًا "إضافة" تلك الملفات الجديدة قبل الالتزام.

ولكن يبدو أنك يجب أن تفكر في استخدام البرنامج النصي svn-load-dirs.pl.يمكنك أن تقرأ عن هذا في كتاب التخريب، الفصل "فروع البائعين".

نصائح أخرى

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

الدلائل مختلفة قليلاً.يقوم Subversion بتخزين معلومات المستودع على مستوى المجلد.لذلك، إذا قمت بإنشاء مجلد جديد، فلن يكون له اتصال تلقائيًا بـ Subversion.(باستخدام شيء مثل TortoiseSvn، فإنه يعتني بالكثير من ذلك نيابةً عنك.)

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

نظرًا لأنه لا يمكنك الكتابة فوق الدلائل وإلا فسوف تدمر ملف .svn الدليل وتفقد جميع معلومات المستودع، يتعين عليك نسخ الملفات ولكن إنشاء أدلة جديدة فقط.هذه هي الطريقة التي سأفعل بها ذلك، من داخل نسخة عمل التخريب التي تريد تحديثها:

(cd <newdirectory> ; tar -cf - * ) | tar -xf -

من المؤكد أنك بحاجة إلى نظام Unix-y.يجب أن تعمل مع سيجوين, ، ما لم يفعل Windows شيئًا غريبًا بشكل خاص من خلال الكتابة فوق المجلدات على مستوى النظام.

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