سؤال

يبدو أنني لا أحقق أي شيء مع هذا.إما البحث في الويب عن برنامج نصي، وما إلى ذلك.حصل أي شخص على برنامج نصي يمكنك من خلاله تحرير ملف pre-commit.tmpl الجاهز في بيئة Windows التي تتطلب إدخال x من الأحرف للتعليق على الالتزام في Tortoise Subversion عالميًا بحيث يُطلب من جميع أعضاء الفريق بينما يتم دفع هذا المطلب إلى العملاء من خادم SVN؟

لا أعرف لغة البرمجة النصية ويجب أن يكون هذا أمرًا بسيطًا للغاية دون أن أستغرق وقتًا في معرفة البرمجة النصية خلال الساعات الثلاث القادمة.

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

المحلول

وهذا هو ملف .bat تتطلب وجود تعليق. فإنه يتحقق من وجود حرف واحد على الأقل في التعليق.

 @echo off  
 :: Stops commits that have empty log messages.        
 @echo off  

 setlocal  

 rem Subversion sends through the path to the repository and transaction id  
 set REPOS=%1  
 set TXN=%2           

 svnlook log %REPOS% -t %TXN% | findstr . > nul  
 if %errorlevel% gtr 0 (goto err) else exit 0  

 :err  
 echo. 1>&2  
 echo Your commit has been blocked because you didn't enter a comment. 1>&2  
 echo Write a log message describing the changes made and try again. 1>&2
 echo Thanks 1>&2
 exit 1

وهذا الملف يجلس في المجلد / السنانير من المستودع، واسمه قبل commit.bat. إذا كنت بحاجة إلى الحد الأدنى من الشخصيات، خط لتعديل هو

svnlook log %REPOS% -t %TXN% | findstr . > nul

وحتى إذا كنت تريد ما لا يقل عن 10 حرفا، تحتاج إلى أن يكون 10. وليس واحدة فقط

svnlook log %REPOS% -t %TXN% | findstr .......... > nul

المتقدمة للالأمر FINDSTR سيتيح لك ان تفعل مربي الحيوانات الشيكات (مجموعات حرف معينة، إلخ)

نصائح أخرى

SubversionNotify ، وربما يفعل أكثر مما تحتاجه، ولكن بسيط جدا لانشاء .

وجرب هذا:

rem Make sure that the log message contains some text.
set REPOS=%1
set TXN=%2

"C:\Program Files\Subversion\bin\SVNlook.exe" log -t %TXN% %REPOS% | FindStr [a-zA-Z0-9]  
IF %ERRORLEVEL% EQU 0 GOTO OK  
echo Your commit has been blocked because you didn't provide a log message 1>&2  
echo Please write a log message describing the purpose of your changes and 1>&2  
echo then try committing again. -- Thank you 1>&2   
exit 1  

:OK  
rem -------------------------------------------------------------  
rem Check if comment is in list of reserved words to not be used..  
rem -------------------------------------------------------------  

"C:\Program Files\Subversion\bin\SVNlook.exe" log -t %TXN% %REPOS% >comment  
setlocal enabledelayedexpansion  
Set SEPARATOR=  
set COMMENT=  
for /f "delims=" %%a in (comment) do (      
    set currentline=%%a  
    set COMMENT=!COMMENT!%SEPARATOR%!currentline!  
)  

FIND "%COMMENT%" "C:\Program Files\Subversion\excludedwords.txt">Null  
If %ERRORLEVEL% EQU 1 goto OK2  

:Fail  
echo Your commit has been blocked because the single word comment you provided is not allowed 1>&2  
echo Line is -%COMMENT%- 1>&2  
echo Please write a proper log message describing the purpose of your changes and 1>&2  
echo then try committing again. -- Thank you 1>&2   
exit 1  


:OK2  
rem -------------------------------------------------------------  
rem Check number of words on the line if = 2 then reject comment  
rem -------------------------------------------------------------  
Set VAR1=%COMMENT%  
Set count=0  
For %%j in (%VAR1%) Do Set /A count+=1  
IF %count% EQU 2 goto Fail2  
goto OK3  

:Fail2  
echo Your commit has been blocked because not enough detail supplied 1>&2  
echo Please write a longer log message describing the purpose of your changes and 1>&2  
echo then try committing again. -- Thank you 1>&2   
exit 1  

:OK3  
rem -------------------------------------------------------------  
rem Check that the author of this commit has the rights to perform  
rem -------------------------------------------------------------  
rem the commit on the files and directories being modified.  
rem commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1  

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

انا املك ربط ما قبل الالتزام يمكنها أن تفعل ما تريد بالضبط.بالإضافة إلى الكثير.

  • يمكنك تحديد الحد الأدنى لطول تعليق الالتزام.
  • يمكنك مطابقة تعليق الالتزام مع أ تعبير عادي.لا يمكنك تحديد الطول فحسب، بل يمكنك أيضًا تحديد معلمات معينة.على سبيل المثال، هل يحتوي تعليق الالتزام على رقم خطأ يستخدمه نظام تتبع العيوب الخاص بك، حتى تتمكن من تتبع التغيير إلى عيب معين؟

كما يسمح لك بالقيام بما يلي:

  • قم بتعيين أذونات التزام مختلفة لملفات أو أدلة معينة:
    • قراءة و كتابة:يمكن للمستخدم الخروج وارتكاب هذه العناصر.
    • يقرأ فقط:يمكن للمستخدم سحب هذا العنصر، لكن لا يمكنه إجراء تغييرات.
    • الوظيفة الإضافية فقط:يمكن للمستخدم إضافة دليل عبر svn cp, ، ولكن لا تلتزم بأي تغييرات.هذا مثالي ل /tags الدليل حيث يُسمح لك بإنشاء علامة، ولكن لا يمكنك تعديل العلامة.
    • لا حذف:يمكن للمستخدمين إجراء تغييرات وإضافة ملفات جديدة، ولكن لا يمكنهم حذف هذه الملفات.
    • لا إضافة:يمكن للمستخدمين تنفيذ التغييرات فقط، ولا يمكنهم إضافة أو حذف الملفات في الالتزام.

ويتيح لك أيضًا القيام بذلك:

  • حظر أسماء ملفات معينة عبر التعبيرات العادية لـ الكرة,
  • تتطلب ملفات أو أدلة معينة أن تحتوي على خاصية معينة بقيمة معينة.مفيد جدًا لأشياء مثل التأكد من أن البرامج النصية لـ Unix Shell، وUnix Makefiles، وملفات Windows Batch لها نهاية السطر الصحيحة، أو svn:ignore تم تعيينه، بحيث لا يلتزم المستخدمون عن طريق الخطأ بالملفات التي لا ينبغي عليهم الالتزام بها.
  • يتطلب تعيين خصائص مراجعات معينة بقيم معينة.هذه هي الطريقة التي تتحقق بها من رسائل الالتزام، ولكن قول ذلك svn:log يجب أن يتطابق مع بعض التعبيرات العادية.

تمت كتابة هذا البرنامج النصي للالتزام المسبق بلغة Perl.بشكل افتراضي، يأتي Perl مع خوادم Unix وMac وLinux.لسوء الحظ، لا يتم تضمينه على أجهزة الكمبيوتر التي تعمل بنظام Windows.لحسن الحظ، هناك العديد من حزم Perl مفتوحة المصدر، ومجانية، وسهلة التثبيت للكمبيوتر الشخصي، مثل ActivePerl و الفراولة بيرل

في Windows، يمكنك استخدام VisualSVNServerHooks.exe check-logmessage قبل ارتكاب هوك الذي يأتي مع VisualSVN Server و يقع في الدليل %VISUALSVN_SERVER%bin. وهذه الأداة بسيطة تساعدك على تحديد الحد الأدنى المسموح به لعدد الأحرف في الرسالة السجل.

وراجع مقالة KB140: التحقق من صحة ارتكاب رسائل سجل في VisualSVN خادم للحصول على تعليمات .

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