... | ... |
@@ -11,6 +11,7 @@ use File::Path 'mkpath'; |
11 | 11 |
has 'bin'; |
12 | 12 |
has 'rep_home'; |
13 | 13 |
has 'encoding' => 'UTF-8'; |
14 |
+has text_exts => sub { ['txt'] }; |
|
14 | 15 |
|
15 | 16 |
# Encode |
16 | 17 |
use Encode qw/encode decode/; |
... | ... |
@@ -34,10 +35,18 @@ sub dec { |
34 | 35 |
} |
35 | 36 |
|
36 | 37 |
sub authors { |
37 |
- my ($self, $rep, $ref, $file) = @_; |
|
38 |
+ my ($self, $user, $project, $ref, $file) = @_; |
|
38 | 39 |
|
39 | 40 |
# Command "git log FILE" |
40 |
- my @cmd = ($self->cmd($rep), 'log', '--format=%an', $ref, '--', $file); |
|
41 |
+ my @cmd = $self->_cmd( |
|
42 |
+ $user, |
|
43 |
+ $project, |
|
44 |
+ 'log', |
|
45 |
+ '--format=%an', |
|
46 |
+ $ref, |
|
47 |
+ '--', |
|
48 |
+ $file |
|
49 |
+ ); |
|
41 | 50 |
open my $fh, "-|", @cmd |
42 | 51 |
or croak 500, "Open git-cat-file failed"; |
43 | 52 |
my $authors = {}; |
... | ... |
@@ -146,10 +155,16 @@ sub blob_contenttype { |
146 | 155 |
} |
147 | 156 |
|
148 | 157 |
sub blob_size_kb { |
149 |
- my ($self, $rep, $rev, $file) = @_; |
|
158 |
+ my ($self, $user, $project, $rev, $file) = @_; |
|
150 | 159 |
|
151 | 160 |
# Command "git diff-tree" |
152 |
- my @cmd = ($self->cmd($rep), 'cat-file', '-s', "$rev:$file"); |
|
161 |
+ my @cmd = $self->_cmd( |
|
162 |
+ $user, |
|
163 |
+ $project, |
|
164 |
+ 'cat-file', |
|
165 |
+ '-s', |
|
166 |
+ "$rev:$file" |
|
167 |
+ ); |
|
153 | 168 |
open my $fh, "-|", @cmd |
154 | 169 |
or croak 500, "Open cat-file failed"; |
155 | 170 |
my $size = $self->dec(scalar <$fh>); |
... | ... |
@@ -5,35 +5,38 @@ |
5 | 5 |
# Parameters |
6 | 6 |
my $user = param('user'); |
7 | 7 |
my $project = param('project'); |
8 |
- my $root_ns = $api->root_ns(config->{root}); |
|
9 |
- my $rep_ns = "$root_ns/$user/$project.git"; |
|
10 |
- my $rep = "/$rep_ns"; |
|
11 | 8 |
my $object = param('object'); |
12 | 9 |
|
13 | 10 |
# Git |
14 | 11 |
my $git = $self->app->git; |
15 | 12 |
|
16 | 13 |
# Revision and blob |
17 |
- my ($rev, $blob) = $git->parse_object($rep, $object); |
|
14 |
+ my ($rev, $blob) = @{$git->parse_object($user, $project, $object)}; |
|
18 | 15 |
|
19 | 16 |
# Commit log |
20 |
- my $commit_log = $git->latest_commit_log($rep, $rev, $blob); |
|
17 |
+ my $commit_log = $git->latest_commit_log($user, $project, $rev, $blob); |
|
21 | 18 |
|
22 | 19 |
# Commit |
23 |
- my $commit = $git->parse_commit($rep, $rev); |
|
20 |
+ my $commit = $git->parse_commit($user, $project, $rev); |
|
24 | 21 |
|
25 | 22 |
# Authors |
26 |
- my $authors = $git->authors($rep, $rev, $blob); |
|
23 |
+ my $authors = $git->authors($user, $project, $rev, $blob); |
|
27 | 24 |
|
28 | 25 |
# Blob content |
29 |
- my $bid = $git->id_by_path($rep, $rev, $blob, 'blob') |
|
26 |
+ my $bid = $git->id_by_path($user, $project, $rev, $blob, 'blob') |
|
30 | 27 |
or $api->croak('Cannot find file'); |
31 |
- my @cmd = ($git->cmd($rep), 'cat-file', 'blob', $bid); |
|
28 |
+ my @cmd = $git->_cmd( |
|
29 |
+ $user, |
|
30 |
+ $project, |
|
31 |
+ 'cat-file', |
|
32 |
+ 'blob', |
|
33 |
+ $bid |
|
34 |
+ ); |
|
32 | 35 |
open my $fh, '-|', @cmd |
33 | 36 |
or $api->croak(qq/Couldn't cat "$blob", "$bid"/); |
34 | 37 |
|
35 | 38 |
# Blob info |
36 |
- my $blob_size = $git->blob_size_kb($rep, $rev, $blob); |
|
39 |
+ my $blob_size = $git->blob_size_kb($user, $project, $rev, $blob); |
|
37 | 40 |
my $mimetype = $git->blob_mimetype($fh, $blob); |
38 | 41 |
|
39 | 42 |
# Parse line |