HipChat notification: add support for Mercurial inputs for determining who might have broken the build.

[?]
Aug 7, 2013, 8:53 AM
IBW53PUCYRU75DHCKT4VFGN3B2QNRD6U2WTAQDHJOYEHUHPCXF2QC

Dependencies

  • [2] NB2VOKIR Include names of committers in HipChat notifications
  • [3] JAH3UPWA Support revision control systems via plugins
  • [4] ZDEHAFHV Add a plugin for HipChat notification

Change contents

  • replacement in src/lib/Hydra/Plugin/HipChatNotification.pm at line 48
    [2.2200][2.2200:2250]()
    next unless $curInput->type eq "git";
    [2.2200]
    [2.2250]
    next unless ($curInput->type eq "git" || $curInput->type eq "hg");
  • edit in src/lib/Hydra/Plugin/MercurialInput.pm at line 13
    [3.10963]
    [3.10963]
    }
    sub _parseValue {
    my ($value) = @_;
    (my $uri, my $id) = split ' ', $value;
    $id = defined $id ? $id : "default";
    return ($uri, $id);
    }
    sub _clonePath {
    my ($uri) = @_;
    my $cacheDir = getSCMCacheDir . "/hg";
    mkpath($cacheDir);
    return $cacheDir . "/" . sha256_hex($uri);
  • replacement in src/lib/Hydra/Plugin/MercurialInput.pm at line 34
    [3.11063][3.11063:11106]()
    (my $uri, my $id) = split ' ', $value;
    [3.11063]
    [3.11106]
    (my $uri, my $id) = _parseValue($value);
  • replacement in src/lib/Hydra/Plugin/MercurialInput.pm at line 41
    [3.11214][3.11214:11336]()
    my $cacheDir = getSCMCacheDir . "/hg";
    mkpath($cacheDir);
    my $clonePath = $cacheDir . "/" . sha256_hex($uri);
    [3.11214]
    [3.11336]
    my $clonePath = _clonePath($uri);
  • edit in src/lib/Hydra/Plugin/MercurialInput.pm at line 98
    [3.13365]
    [3.13365]
    }
    sub getCommits {
    my ($self, $type, $value, $rev1, $rev2) = @_;
    return [] if $type ne "hg";
    return [] unless $rev1 =~ /^[0-9a-f]+$/;
    return [] unless $rev2 =~ /^[0-9a-f]+$/;
    my ($uri, $id) = _parseValue($value);
    my $clonePath = _clonePath($uri);
    chdir $clonePath or die $!;
    my $out;
    IPC::Run::run(["hg", "log", "--template", "{node|short}\t{author|person}\t{author|email}\n", "-r", "$rev1:$rev2", $clonePath], \undef, \$out)
    or die "cannot get mercurial logs: $?";
    my $res = [];
    foreach my $line (split /\n/, $out) {
    if ($line ne "") {
    my ($revision, $author, $email) = split "\t", $line;
    push @$res, { revision => $revision, author => $author, email => $email };
    }
    }
    return $res;
  • edit in src/lib/Hydra/Plugin/MercurialInput.pm at line 127
    [3.13368]
    [3.13368]