كيف يمكنني الوصول إلى الملف الذي تم ارتكابه من خطاف مسبق من التخريب في بيرل؟
-
18-09-2019 - |
سؤال
أحتاج إلى القيام بما يلي:
اكتب خطاف قبل الالتزام في بيرل
يجب على الخطاف التحقق من جميع الملفات التي يتم ارتكابها للحصول على بعض النص، وفشل إذا لم يتم العثور على هذا النص
في الأساس، أحتاج إلى مثال على خطاف بيرل الذي يقرأ الملفات التي يرتكبها.
أنا حقا أبحث عن بعض الحل الأنيق مع أقل كمية من التعليمات البرمجية.
ملاحظات: هوك يجب استخدام svnlook
أو طريقة أفضل أخرى للعثور على الملفات.
المحلول
الخطاف قبل الالتزام:
my $repos = shift;
my $txn = shift;
foreach my $line (`$svnlook changed -t $txn "$repos"`)
{
chomp($line);
if ($line !~ /^([AUD]).\s\s(.+)$/)
{
print STDERR "Can't parse [$line].\n";
exit(1);
}
else
{
my $action = $1;
my $file = $2;
chomp($file);
#If path has trailing slash, then it is a folder and we want to skip folders
if($file =~ /\/$/)
{
next;
}
my $fileContent = `$svnlook cat -t $txn "$repos" "$file"`;
if ($action =~ /[AU]/)
{
my @lines = split(/\n/, $fileContent );
#Check for whatever you need in this file's content
}
}
}
نصائح أخرى
يبدو أنك حصلت على الأساس حظية بالفعل:
- الحصول على قائمة جميع الملفات التي يتم ارتكابها
- ابحث في كل واحد منهم بدوره لنص معين
- إذا تم العثور على النص، يرفض الالتزام
ستجد بعض المعلومات حول كتابة السنانير قبل ارتكاب كتيب.
لا ينبغي أن يكون من الصعب جدا تعديل هذا المثال في بيثون للقيام بما تريد. انظر أيضا hooks
الدليل الفرعي لمستودعك لبعض القوالب و البرامج النصية هوك و ساهم برصاصة هوك.
لا تنتمي إلى StackOverflow