Как я могу получить доступ к зафиксированному файлу из перехвата предварительной фиксации Subversion в Perl?

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

  •  18-09-2019
  •  | 
  •  

Вопрос

Мне нужно сделать следующее:

  1. Напишите хук предварительной фиксации на Perl

  2. Hook должен проверять все фиксируемые файлы на наличие некоторого текста и завершать работу с ошибкой, если этот текст не найден

По сути, мне нужен пример Perl-перехвата, который считывает фиксируемые файлы.

Я действительно ищу какое-нибудь элегантное решение с наименьшим объемом кода.

Примечания:Крючок следует использовать 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

    }
  }
}

Другие советы

Похоже, вы уже определились с фундаментом:

  • получить список всех передаваемых файлов
  • выполняйте поиск определенного текста в каждом из них по очереди
  • если текст найден, отклоните фиксацию

Вы найдете некоторую информацию о написании перехватов перед фиксацией в руководство пользователя.

Его не должно быть слишком сложно модифицировать этот пример на Python делать то, что ты хочешь.Смотрите также hooks подкаталог вашего репозитория для некоторых шаблонов и скрипты для подключения и внесенные скрипты хуков.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top