كيف يمكنني تحويل جميع نهايات الأسطر إلى CRLF أو LF أو CR أثناء عمليات SVN

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

  •  08-06-2019
  •  | 
  •  

سؤال

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

ماذا تفعل؟

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

المحلول

لا أعتقد أن ما قبل ارتكاب يمكن لـ Hook في الواقع تغيير البيانات التي يتم الالتزام بها - يمكنه عدم السماح بالالتزام، لكنني لا أعتقد أنه يمكنه إجراء التحويل نيابةً عنك.

يبدو أنك تريد ملكية تم تعيين 'svn:eol-style' على 'native' - سيؤدي هذا تلقائيًا إلى تحويل الأسطر الجديدة إلى كل ما يتم استخدامه على النظام الأساسي الخاص بك (استخدم "CRLF" أو "CR" أو "LF" للحصول على تلك الأسطر بغض النظر عما يريده نظام التشغيل).

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

نصائح أخرى

الأول هو تنظيف كل شيء.هل تستخدم نظام التشغيل Windows أو Unix/Linux/Mac؟

إذا كنت تستخدم Unix/Linux/Mac، فيمكنك تجربة شيء مثل هذا:

$ find . -type f -name "*.java" -exec dos2unix {}\;

هذا إذا كان لديك dos2unix على الصندوق الخاص بك.إنه ليس موجودًا على جهاز Mac الخاص بي أو أي من أجهزة Linux الستة المتوفرة لدينا.يبدو أننا لم نقم بتثبيت هذه الحزمة بالذات.لحسن الحظ، من السهل العثور عليه.

كن حذرًا عند استخدامه لأنك لا ترغب في حذف الملفات الثنائية.

بمجرد الانتهاء من تنظيف كل شيء، يجب عليك وضع svn:eol-style الممتلكات على الملفات الخاصة بك.ضبطه على محلي سوف يقوم بسحب الملف مع نهاية السطر الصحيح لجهازك، ولكن قم بتخزينه بتنسيق نهاية سطر Unix.الخيارات الثلاثة الأخرى هي "LF" لنظام التشغيل Unix، و"CRLF" لنظام التشغيل Windows، و"CR" لنظام التشغيل Mac OS X Mac.يجد معظم الناس "أصليًا" ليعملوا بشكل أفضل.المشكلة الوحيدة في Native هي أنه لن يقوم بفحص ملف ذو نهايات أسطر مختلطة بينما يقوم "LF" و"CRLF" بذلك.

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

أضف ربط ما قبل الالتزام الذي يوزع محتوى الملف ويقوم بدمج CRLF/LF/CR/etc لك ​​قبل كتابته إلى SVN.

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

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