سؤال

أحاول حاليا تمديد ملف دفعي مجاني بالفعل (والعمل) مسبقا للالتزام ب SVN. الجزء الأول يحظر أي الالتزام ليس لديه تعليقات ويعمل كما هو متوقع. الجزء الثاني هو Attmept لمنع المستخدمين الذين يرتكبون ملفات SUO، ومع ذلك حظر هذا حاليا جميع الالتزام.

فهمي لبرمجة DOS ليس رائعا لذا أظن أنه قد يكون استخدامي من findstr؟

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

"C:\Program Files\VisualSVN Server\bin\svnlook.exe" log -t %2 %1 | FindStr [a-zA-Z0-9]
IF %ERRORLEVEL% EQU 0 GOTO OK
echo "Commit Comments are Required" >&2
exit 1
:OK
"C:\Program Files\VisualSVN Server\bin\svnlook.exe" diff -t %2 %1 | FindStr /R "[a-zA-Z]\.suo"
IF %ERRORLEVEL% EQU 0 exit 0
echo "SUO files cannot be committed" >&2
exit 1
هل كانت مفيدة؟

المحلول

FindStr إرجاع 0 إذا تم العثور على شيء ما، و 1 إذا لم يتم العثور على شيء. أنت فقط قلب الشيك الخاص بك.

لا توجد دفعة مطلوبة، حتى على نظام التشغيل Windows تفاعلية، حتى تتمكن من تجربتها على قيد الحياة:

>dir | findstr ".sln"
15.01.2009  16:37            33.844 Project.sln

>echo %ERRORLEVEL%
0

>dir | findstr ".slngimpf"

>echo %ERRORLEVEL%
1

راجع للشغل، من الأسهل الكتابة

if errorlevel 0 andthencontinuewithwhatever

بهذه الطريقة البرنامج النصي مستقر أيضا ضد المشؤومة:

set errorlevel=0

والتي ستدمر بعد ذلك أي محاولة مستقبلية لطباعة ErrorLevel مع٪ ErrorLevel٪ بطريقة صحيحة.

(تعديل) ملاحظة مهمة: نسيت أن أقول أن if errorlevel تبحث بناء الجملة ما إذا كان ErrorLevel هو أكبر من أو يساوي إلى القيمة التي يتم اختبارها ل. لذلك لاستخدامها بشكل صحيح، يجب عليك دائما التحقق من أعلى خطأ أولا، مثل:

someCommand
if errorlevel 10 ...
if errorlevel 9 ...
if errorlevel 0 ...

نصائح أخرى

ليس بالضبط الإجابة التي تبحث عنها، ولكن يمكنك حظر جميع ملفات * .suo مع التجاهل العالمي اختيار.

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