سؤال

هل من الممكن استخدام رسالة الالتزام في ربط ما قبل الالتزام في CVS؟ يعمل خادم CVS عن بعد، وأنا الوصول إليها باستخدام pserver.

من الناحية المثالية، أريد أن اسمح الالتزام إذا مرفت الملفات أو رسالة الالتزام تحتوي على نص معين.

ليس لدي خيار لاستخدام نظام إصدار آخر.

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

المحلول

فيما يلي بعض البرامج التعليمية المفيدة لقراءة المزيد:

http://durak.org/sean/software/software/cvsbook/the-commitinfo-and-loginfo-and-rcsinfo-files.html.
http://durak.org/sean/pubs/software/cvsbook/the-verifymsg-and-rcsinfo-files.html#the-verielymsg-and-rcsinfo-files.

لا يمكنك أن تفعل ما تريد مع خطاف واحد فقط ولكن يمكنك استخدام اثنين من السنانير، commitinfo سوف تتيح لك التحقق من الملفات نفسها و verifymsg سوف تتيح لك التحقق من الرسالة. يمكن استخدام كلاهما لإلغاء الالتزام (البرامج تحتاج فقط إلى الخروج بالحالة 1). في حال لم تكن على علم، checkoutlist, commitinfo ويمكن العثور على "VeriFyMsg" في دليل CVSROT لمستودعك. أود أن أوصي بوضع أي برامج نصية تكتبها كخطر في هذا الدليل كذلك، ولكن لا يهم حقا كما تحصل على المسار الكامل. أيضا، بيرل ليست ضرورية أو مطلوبة، بسيطة للغاية بالنسبة لي لكتابة بعض الأمثلة (سخيفة) في:

checkoutlist.

# these files will be automatically checked out for you
acceptable

verifymsg.

# specifies which file to run as hook, %l is filename of log message
# bar$     /path/to/repo/CVSROOT/verify_ends_in_bar %l
DEFAULT    /path/to/repo/CVSROOT/acceptable %l %s

مقبول

#/usr/bin/perl -w

use strict;
use warnings;

# this would be simpler if cvs passed sane arguments
my ($logfile, $dir, @files) = @ARGV;
my $grep = `grep -i 'accept liability' $logfile`;
exit 0 if $grep;

my $found = 0;
foreach my $file (@files) {
    my $path = join '/', $dir, $file;
    die "Can't find file $path" if ! -e $path;
    my $grep = `grep -i 'evidence of any deliberation' $path`;
    $found++ if $grep;
}
die "You must accept liability or show evidence of deliberation" if $found < @files;

مفتاح التحذير: كتبت معظم هذا من أعلى رأسي دون أي اختبار، لذلك لا يمكنني ضمان أنه يعمل ولكن يجب أن يحصل لك على الأقل إغلاق.

تحرير مرة أخرى, لقد أدركت أنني كنت مخطئا في الأصل ويمكنك اجتياز كل من LogFile وأسماء الملفات الملتزم بها verifymsg جعل الجواب أكثر بساطة قليلا.

نصائح أخرى

ال السيرة الذاتية :: الزناد يبدو أن وحدة بيرل لديها تجريبي ميزة تسمح بقيم التخزين المؤقت بين مكالمة مشغلات مختلفة. يذكر الصفحة صراحة تمرير أسماء الملفات من Colorinfo إلى VerifyMsg، لذلك ربما يساعدك على تحقيق ما تريد.

يمكنك استعمال ال verifymsg ملف في CVSROOT الدليل. يمكنك تكوينه للاتصال برامج نصية يمكنه التحقق من محتويات تعليق Checkin. يمكنك رفض الالتزام عن طريق العودة غير صفرية.

يحتوي ملف VeriFyMsg الافتراضي على مزيد من التفاصيل.

لقد تعاملت مع نفس المشكلة. حتى الآن كان الحل الأفضل هو الحصول على معرف العملية الأصل (GetPPID ()) واستخدامه في INA Temp ملف يمكنني وضع قائمة الملفات داخل Colorinfo. يبدو أن هذا المعرف الأصل هو نفسه لعملية VerifyMsg (على AIX على الأقل). حظا طيبا وفقك الله.

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