سؤال

لدي 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

على الرغم من أن هناك ربما لا تزال بعض الزاوية حال سوف تفشل.

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