我需要做到以下几点:

  1. 写预先提交钩在Perl

  2. 钩应该检查的所有文件正在致力于存在一些文字,以及失败,如果该案文不被发现

基本上,我需要一个例子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

    }
  }
}

其他提示

听起来好像你已经有了基础,推测已经:

  • 获得的所有文件的列表正在致力
  • 搜索每一个他们又用于特定的文本
  • 如果文本发现,拒绝提交

你会发现一些信息写入预先承诺挂钩的 手册.

它不应该太困难的修改 这个例子中的蟒蛇 做你想要什么。也见 hooks 子目录的储存库对于一些模板和 钩脚本捐助挂钩的脚本.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top