Author: rob
Date: Thu Aug 25 14:50:31 2011
New Revision: 28814
URL: https://svn.nixos.org/websvn/nix/?rev=28814&sc=1
Log:
hydra: when no external url is given for diff's of git/hg input, revert to a
diff done on a local available clone
Modified:
hydra/trunk/src/lib/Hydra/Controller/API.pm
hydra/trunk/src/lib/Hydra/Controller/Root.pm
hydra/trunk/src/lib/Hydra/Helper/AddBuilds.pm
hydra/trunk/src/root/common.tt
Modified: hydra/trunk/src/lib/Hydra/Controller/API.pm
==============================================================================
--- hydra/trunk/src/lib/Hydra/Controller/API.pm Thu Aug 25 11:12:32 2011
(r28813)
+++ hydra/trunk/src/lib/Hydra/Controller/API.pm Thu Aug 25 14:50:31 2011
(r28814)
@@ -4,10 +4,12 @@
use warnings;
use base 'Catalyst::Controller';
use Hydra::Helper::Nix;
+use Hydra::Helper::AddBuilds;
use Hydra::Helper::CatalystUtils;
use Hydra::Controller::Project;
use JSON::Any;
use DateTime;
+use Digest::SHA qw(sha256_hex);
sub api : Chained('/') PathPart('api') CaptureArgs(0) {
my ($self, $c) = @_;
@@ -206,4 +208,30 @@
$c->forward('Hydra::View::Plain');
}
+sub scmdiff : Chained('api') PathPart('scmdiff') Args(0) {
+ my ($self, $c) = @_;
+
+ my $uri = $c->request->params->{uri} ;
+ my $type = $c->request->params->{type} ;
+ my $branch = $c->request->params->{branch} ;
+ my $rev1 = $c->request->params->{rev1} ;
+ my $rev2 = $c->request->params->{rev2} ;
+
+ my $diff = "";
+ if($type eq "hg") {
+ my $clonePath = scmPath . "/" . sha256_hex($uri);
+ die if ! -d $clonePath;
+ $diff .= `(cd $clonePath ; hg log -r $rev1:$rev2)`;
+ $diff .= `(cd $clonePath ; hg diff -r $rev1:$rev2)`;
+ } elsif ($type eq "git") {
+ my $clonePath = scmPath . "/" . sha256_hex($uri.$branch);
+ die if ! -d $clonePath;
+ $diff .= `(cd $clonePath ; git log $rev1..$rev2)`;
+ $diff .= `(cd $clonePath ; git diff $rev1..$rev2)`;
+ }
+
+ $c->stash->{'plain'} = { data => (scalar $diff) || " " };
+ $c->forward('Hydra::View::Plain');
+}
+
1;
Modified: hydra/trunk/src/lib/Hydra/Controller/Root.pm
==============================================================================
--- hydra/trunk/src/lib/Hydra/Controller/Root.pm Thu Aug 25 11:12:32
2011 (r28813)
+++ hydra/trunk/src/lib/Hydra/Controller/Root.pm Thu Aug 25 14:50:31
2011 (r28814)
@@ -150,6 +150,7 @@
, uri_for('Root', 'nar', [], "*")
, uri_for('Root', 'status', [])
, uri_for('Root', 'all', [])
+ , uri_for('API', 'scmdiff', [])
, uri_for('Project', 'all', ["*"])
, channelUris('Root', ["*"])
, channelUris('Project', ["*", "*"])
Modified: hydra/trunk/src/lib/Hydra/Helper/AddBuilds.pm
==============================================================================
--- hydra/trunk/src/lib/Hydra/Helper/AddBuilds.pm Thu Aug 25 11:12:32
2011 (r28813)
+++ hydra/trunk/src/lib/Hydra/Helper/AddBuilds.pm Thu Aug 25 14:50:31
2011 (r28814)
@@ -12,7 +12,7 @@
use File::Path;
our @ISA = qw(Exporter);
-our @EXPORT = qw(fetchInput evalJobs checkBuild inputsToArgs
captureStdoutStderr getReleaseName getBuildLog addBuildProducts restartBuild);
+our @EXPORT = qw(fetchInput evalJobs checkBuild inputsToArgs
captureStdoutStderr getReleaseName getBuildLog addBuildProducts restartBuild
scmPath);
sub scmPath {
return getHydraPath . "/scm" ;
Modified: hydra/trunk/src/root/common.tt
==============================================================================
--- hydra/trunk/src/root/common.tt Thu Aug 25 11:12:32 2011 (r28813)
+++ hydra/trunk/src/root/common.tt Thu Aug 25 14:50:31 2011 (r28814)
@@ -308,7 +308,14 @@
[% END %]
[% END %]
[% IF nouri %]
- [% contents %]
+ [% res = bi1.uri.split(' ') %]
+ [% url = res.0 %]
+ [% branch = res.1 %]
+ [% IF bi1.type == "hg" || bi1.type == "git" %]
+ <a target="_new" href="/api/scmdiff?uri=[% url %]&rev1=[%
bi1.revision %]&rev2=[% bi2.revision %]&type=[% bi1.type %]&branch=[% branch
%]">[% contents %]</a>
+ [% ELSE %]
+ [% contents %]
+ [% END %]
[% END %]
[% END %]
_______________________________________________
nix-commits mailing list
[email protected]
http://mail.cs.uu.nl/mailman/listinfo/nix-commits