繁体   English   中英

如何从 Perl 中的 Subversion 预提交钩子访问提交的文件?

[英]How can I access the commited file from a Subversion pre-commit hook in Perl?

我需要执行以下操作:

  1. 用 Perl 编写预提交钩子

  2. Hook 应该检查所有提交的文件是否存在某些文本,如果找不到该文本则失败

基本上,我需要一个 Perl 钩子的例子来读取正在提交的文件。

我真的在寻找一些代码最少的优雅解决方案。

注意:Hook 应该使用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 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM