هي CRLF خطوط موافق في القضبان مشروع نشر على لينكس ؟
-
22-07-2019 - |
سؤال
لدي Git (في الأصل السير الذاتية ، ثم SVN الآن Git) تحتوي على القضبان المشروع التي تم نشرها على لينكس لفترة من الوقت الآن.يبدو أن كل شيء تسير على ما يرام.
الآن بعد أن كنت تحويلها إلى بوابة أرى أن العديد من الملفات في مستودع يحتوي على CRLF
خط النهايات.أحب أن يكون كل متسقة (LF
) ، ولكن ليس على حساب فقدان تاريخ تحرير كل ملف له CRLF
خط النهايات.
هل يمكنك التفكير في أي سبب لا أستطيع ترك الملفات كما هم ؟ أتذكر أن يكون هناك مشكلة مع البرامج النصية قذيفة أو كرون الملفات أو شيء لم يستجيب CRLF
بشكل جيد للغاية.
أيضا, أنا أعرف كل شيء عن بوابة الخيارات core.autocrlf
و core.safecrlf
, لكن هل هناك طريقة ما لديك تحويل جميع ملفات نصية من CRLF
إلى LF
على الخروج (على لينكس الجانب) ...أيالأساسية.autolf الخيار أو شيئا من هذا القبيل ؟
المحلول
إذا كان على ما يرام بالنسبة لك لإعادة كتابة التاريخ المستودع الخاص بك (انظر مشاكل مع إعادة كتابة التاريخ) هل يمكن استخدام بوابة تصفية فرع لتحويل CRLF إلى LF:
git filter-branch --tree-filter 'find . -path './.git' -prune -o -type f -exec dos2unix \{} \;' HEAD
لاحظ أنه إذا كان لديك الملفات الثنائية في المستودع الخاص بك سيكون لديك لصقل تجد الأمر إلى استبعادهم.
نصائح أخرى
A التعليق إلى davitenio الجواب ودانيال بيردسلي تعليق;وأعتقد هل يمكن استخدام هذا البرنامج الصغير كما التفاف حول dos2unix:
#!/bin/sh
for f in $@; do
if [ $(file -b -n -i -m /dev/null $f | grep -c "text") -gt 0 ]; then
dos2unix $f
fi
done
على الرغم من أن هناك ربما لا تزال بعض الزاوية حال سوف تفشل.