كيف يمكنني الوصول إلى الملف الذي تم ارتكابه من خطاف مسبق من التخريب في بيرل؟

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

  •  18-09-2019
  •  | 
  •  

سؤال

أحتاج إلى القيام بما يلي:

  1. اكتب خطاف قبل الالتزام في بيرل

  2. يجب على الخطاف التحقق من جميع الملفات التي يتم ارتكابها للحصول على بعض النص، وفشل إذا لم يتم العثور على هذا النص

في الأساس، أحتاج إلى مثال على خطاف بيرل الذي يقرأ الملفات التي يرتكبها.

أنا حقا أبحث عن بعض الحل الأنيق مع أقل كمية من التعليمات البرمجية.

ملاحظات: هوك يجب استخدام 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 الدليل الفرعي لمستودعك لبعض القوالب و البرامج النصية هوك و ساهم برصاصة هوك.

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