كيفية التحقق مما إذا كانت الملفات الملتزمة بـ SVN مشفرة في UTF-8 باستخدام خطافات الالتزام المسبق؟

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

سؤال

أحاول كتابة برنامج نصي لربط الالتزام المسبق لـ SVN في Linux Bash والذي سيرفض الالتزام إذا لم يكن من الممكن تحليل الملفات على أنها UTF-8.

لقد كتبت هذا السيناريو حتى الآن:

REPOS="$1"
TXN="$2"

SVNLOOK=/usr/bin/svnlook
ICONV=/usr/bin/iconv

# Make sure that all files to be committed are encoded in UTF-8

for FILE in $($SVNLOOK changed -t "$TXN" "$REPOS"); do
    if [$ICONV -f UTF-8 $FILE -o /dev/null]; then
        echo "Only UTF-8 files can be committed ("$FILE")" 1>&2
        exit 1
    fi

# All checks passed, so allow the commit.
exit 0

المشكلة هي أن Iconv يتطلب المسار إلى الملفات المخصصة (أو النص في شكل آخر)، ولا أعرف كيفية الحصول عليه.

هل أستطيع مساعدتك؟

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

المحلول

يستخدم svnlook cat للحصول على محتويات ملف من معاملة:

$SVNLOOK cat -t "$TXN" "$REPOS" "$FILE"

نصائح أخرى

بالمناسبة ، هناك مشكلة في هذه الإجابة ! أنت بحاجة إلى اختبار نتيجة الأمر $ SVNLOOK ($؟) لأن التعليمات "exit 1" في عملية فرعية ، لذا لن يمنع النص البرمجي الالتزام أبدًا: Genacodicetagpre

استنادًا إلى النص الموجود في السؤال الأصلي و هذه الإجابة ، إليك وسيلة ربط للالتزام المسبق تضع كل هذامعًا: Genacodicetagpre

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