X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FGitalist%2FURIStructure%2FRepository.pm;h=2e142bd8f722df930426ac1af4d627c0ca907e37;hb=d8712c37489298ea0ea0fc02d4edd46ee5aa357d;hp=9d7a0e3751e38d148712764e29f23a8a32f78dae;hpb=12a0f9d30e501278244732292572ccb0967b194c;p=catagits%2FGitalist.git diff --git a/lib/Gitalist/URIStructure/Repository.pm b/lib/Gitalist/URIStructure/Repository.pm index 9d7a0e3..2e142bd 100644 --- a/lib/Gitalist/URIStructure/Repository.pm +++ b/lib/Gitalist/URIStructure/Repository.pm @@ -5,10 +5,9 @@ use namespace::autoclean; requires 'base'; -after 'base' => sub { - my ($self, $c) = @_; - $c->stash(_do_not_mangle_uri_for => 1); -}; +with qw/ + Gitalist::URIStructure::WithLog +/; sub find : Chained('base') PathPart('') CaptureArgs(1) { my ($self, $c, $repos_name) = @_; @@ -19,6 +18,7 @@ sub find : Chained('base') PathPart('') CaptureArgs(1) { $c->stash( Repository => $repos, HEAD => $repos->head_hash, + data => $repos, ); } catch { @@ -26,14 +26,27 @@ sub find : Chained('base') PathPart('') CaptureArgs(1) { }; } -sub summary : Chained('find') PathPart('') Args(0) {} +before 'log' => sub { + my ($self, $c) = @_; + $c->stash->{Commit} = $c->stash->{Repository}->get_object($c->stash->{Repository}->head_hash); +}; + +sub object : Chained('find') PathPart('') Args(1) { + my ($self, $c, $sha1) = @_; + + my $repo = $c->stash->{Repository}; + my $obj = $c->stash->{Commit} = $repo->get_object($sha1); + my($act) = (ref($obj) || '') =~ /::(\w+)$/; -sub shortlog : Chained('find') Args(0) {} + $c->res->redirect($c->uri_for_action("/ref/\L$act", [$repo->name, $obj->sha1])); + $c->res->status(301); + +} -sub heads : Chained('find') Args(0) {} +sub summary : Chained('find') PathPart('') Args() {} -sub log : Chained('find') Args(0) {} +sub heads : Chained('find') Args() {} -sub tags : Chained('find') Args(0) {} +sub tags : Chained('find') Args() {} 1;