... | ... |
@@ -66,7 +66,7 @@ sub startup { |
66 | 66 |
$self->git($git); |
67 | 67 |
|
68 | 68 |
# Repository Manager |
69 |
- my $manager = Gitprep::Manager->new(app => $self); |
|
69 |
+ my $manager = Gitprep::Manager->new(app => $self, git => $git); |
|
70 | 70 |
weaken $manager->{app}; |
71 | 71 |
$self->manager($manager); |
72 | 72 |
|
... | ... |
@@ -87,6 +87,15 @@ sub can_access_private_project { |
87 | 87 |
return $is_valid; |
88 | 88 |
} |
89 | 89 |
|
90 |
+sub manager { |
|
91 |
+ my $self = shift; |
|
92 |
+ |
|
93 |
+ my $manager = $self->app->manager->clone; |
|
94 |
+ $manager->git($self->git); |
|
95 |
+ |
|
96 |
+ return $manager; |
|
97 |
+} |
|
98 |
+ |
|
90 | 99 |
sub new { |
91 | 100 |
my ($class, $cntl) = @_; |
92 | 101 |
|
... | ... |
@@ -8,6 +8,7 @@ use File::Path qw/mkpath rmtree/; |
8 | 8 |
use File::Temp (); |
9 | 9 |
|
10 | 10 |
has 'app'; |
11 |
+has 'git'; |
|
11 | 12 |
|
12 | 13 |
sub admin_user { |
13 | 14 |
my $self = shift; |
... | ... |
@@ -19,6 +20,16 @@ sub admin_user { |
19 | 20 |
return $admin_user; |
20 | 21 |
} |
21 | 22 |
|
23 |
+sub clone { |
|
24 |
+ my $self = shift; |
|
25 |
+ |
|
26 |
+ my $clone = __PACKAGE__->new; |
|
27 |
+ $clone->app($self->app); |
|
28 |
+ $clone->git($self->git); |
|
29 |
+ |
|
30 |
+ return $clone; |
|
31 |
+} |
|
32 |
+ |
|
22 | 33 |
sub default_branch { |
23 | 34 |
my ($self, $user, $project, $default_branch) = @_; |
24 | 35 |
|
... | ... |
@@ -266,7 +277,7 @@ sub rename_project { |
266 | 277 |
my ($self, $user, $project, $to_project) = @_; |
267 | 278 |
|
268 | 279 |
# Rename project |
269 |
- my $git = $self->app->git; |
|
280 |
+ my $git = $self->git; |
|
270 | 281 |
my $dbi = $self->app->dbi; |
271 | 282 |
my $error; |
272 | 283 |
eval { |
... | ... |
@@ -431,7 +442,7 @@ sub _create_rep { |
431 | 442 |
my ($self, $user, $project, $opts) = @_; |
432 | 443 |
|
433 | 444 |
# Create repository directory |
434 |
- my $git = $self->app->git; |
|
445 |
+ my $git = $self->git; |
|
435 | 446 |
my $rep = $git->rep($user, $project); |
436 | 447 |
mkdir $rep |
437 | 448 |
or croak "Can't create directory $rep: $!"; |
... | ... |
@@ -558,7 +569,7 @@ sub _create_user_dir { |
558 | 569 |
my ($self, $user) = @_; |
559 | 570 |
|
560 | 571 |
# Create user directory |
561 |
- my $rep_home = $self->app->git->rep_home; |
|
572 |
+ my $rep_home = $self->git->rep_home; |
|
562 | 573 |
my $user_dir = "$rep_home/$user"; |
563 | 574 |
mkpath $user_dir; |
564 | 575 |
} |
... | ... |
@@ -576,7 +587,7 @@ sub _delete_user_dir { |
576 | 587 |
my ($self, $user) = @_; |
577 | 588 |
|
578 | 589 |
# Delete user directory |
579 |
- my $rep_home = $self->app->git->rep_home; |
|
590 |
+ my $rep_home = $self->git->rep_home; |
|
580 | 591 |
my $user_dir = "$rep_home/$user"; |
581 | 592 |
rmtree $user_dir; |
582 | 593 |
} |
... | ... |
@@ -593,7 +604,7 @@ sub _delete_rep { |
593 | 604 |
my ($self, $user, $project) = @_; |
594 | 605 |
|
595 | 606 |
# Delete repository |
596 |
- my $rep_home = $self->app->git->rep_home; |
|
607 |
+ my $rep_home = $self->git->rep_home; |
|
597 | 608 |
croak "Can't remove repository. repository home is empty" |
598 | 609 |
if !defined $rep_home || $rep_home eq ''; |
599 | 610 |
my $rep = "$rep_home/$user/$project.git"; |
... | ... |
@@ -625,7 +636,7 @@ sub _exists_rep { |
625 | 636 |
my ($self, $user, $project) = @_; |
626 | 637 |
|
627 | 638 |
# Exists repository |
628 |
- my $rep = $self->app->git->rep($user, $project); |
|
639 |
+ my $rep = $self->git->rep($user, $project); |
|
629 | 640 |
|
630 | 641 |
return -e $rep; |
631 | 642 |
} |
... | ... |
@@ -634,7 +645,7 @@ sub _fork_rep { |
634 | 645 |
my ($self, $user, $project, $to_user, $to_project) = @_; |
635 | 646 |
|
636 | 647 |
# Fork repository |
637 |
- my $git = $self->app->git; |
|
648 |
+ my $git = $self->git; |
|
638 | 649 |
my $rep = $git->rep($user, $project); |
639 | 650 |
my $to_rep = $git->rep($to_user, $to_project); |
640 | 651 |
my @cmd = ( |
... | ... |
@@ -676,8 +687,8 @@ sub _rename_rep { |
676 | 687 |
unless defined $user && defined $project && defined $renamed_project; |
677 | 688 |
|
678 | 689 |
# Rename repository |
679 |
- my $rep = $self->app->git->rep($user, $project); |
|
680 |
- my $renamed_rep = $self->app->git->rep($user, $renamed_project); |
|
690 |
+ my $rep = $self->git->rep($user, $project); |
|
691 |
+ my $renamed_rep = $self->git->rep($user, $renamed_project); |
|
681 | 692 |
move($rep, $renamed_rep) |
682 | 693 |
or croak "Can't move $rep to $renamed_rep: $!"; |
683 | 694 |
} |
... | ... |
@@ -39,7 +39,7 @@ |
39 | 39 |
$params->{salt} = $salt; |
40 | 40 |
|
41 | 41 |
# Create user |
42 |
- eval { app->manager->create_user($id, $params) }; |
|
42 |
+ eval { $api->manager->create_user($id, $params) }; |
|
43 | 43 |
if ($@) { |
44 | 44 |
app->log->error($@); |
45 | 45 |
$errors = ['Internal Error']; |
... | ... |
@@ -23,7 +23,7 @@ |
23 | 23 |
|
24 | 24 |
# Delete user |
25 | 25 |
my $count; |
26 |
- eval { $count = app->manager->delete_user($user) }; |
|
26 |
+ eval { $count = $api->manager->delete_user($user) }; |
|
27 | 27 |
if ($@) { |
28 | 28 |
app->log->error("/_admin/users?op=delete: $@"); |
29 | 29 |
$errors = ['Internal Error']; |
... | ... |
@@ -41,7 +41,7 @@ |
41 | 41 |
else { $errors = $vresult->messages } |
42 | 42 |
} |
43 | 43 |
|
44 |
- my $users = app->manager->users; |
|
44 |
+ my $users = $api->manager->users; |
|
45 | 45 |
%> |
46 | 46 |
|
47 | 47 |
% layout 'common', title => 'Admin Users'; |
... | ... |
@@ -46,7 +46,7 @@ |
46 | 46 |
my $description = $data->{description}; |
47 | 47 |
my $readme = $data->{readme}; |
48 | 48 |
|
49 |
- my $manager = app->manager; |
|
49 |
+ my $manager = $api->manager; |
|
50 | 50 |
if ($manager->exists_project($user, $project)) { |
51 | 51 |
$errors = ['Repository already exists']; |
52 | 52 |
} |
... | ... |
@@ -2,7 +2,7 @@ |
2 | 2 |
# API |
3 | 3 |
my $api = gitprep_api; |
4 | 4 |
|
5 |
- my $admin_user = app->manager->admin_user; |
|
5 |
+ my $admin_user = $api->manager->admin_user; |
|
6 | 6 |
if (defined $admin_user && $admin_user ne '') { |
7 | 7 |
$self->redirect_to('/'); |
8 | 8 |
return; |
... | ... |
@@ -15,7 +15,7 @@ |
15 | 15 |
if ($op eq 'create') { |
16 | 16 |
|
17 | 17 |
# Check existence admin user |
18 |
- my $admin_user = app->manager->admin_user; |
|
18 |
+ my $admin_user = $api->manager->admin_user; |
|
19 | 19 |
if (defined $admin_user) { $errors = ['Admin user already exists.'] } |
20 | 20 |
else { |
21 | 21 |
# Validation |
... | ... |
@@ -1,6 +1,8 @@ |
1 | 1 |
<% |
2 |
+ my $api = gitprep_api; |
|
3 |
+ |
|
2 | 4 |
# Users |
3 |
- my $manager = app->manager; |
|
5 |
+ my $manager = $api->manager; |
|
4 | 6 |
my $users = $manager->users; |
5 | 7 |
|
6 | 8 |
# Goto Start page |
... | ... |
@@ -12,7 +12,7 @@ |
12 | 12 |
my $logined_user = $api->logined($user); |
13 | 13 |
|
14 | 14 |
if ($reset_password_conf_on) { |
15 |
- my $admin_user = app->manager->admin_user; |
|
15 |
+ my $admin_user = $api->manager->admin_user; |
|
16 | 16 |
$user = $admin_user ? $admin_user->{id} : undef; |
17 | 17 |
} |
18 | 18 |
elsif (!$logined_admin && !$logined_user) { |
... | ... |
@@ -52,7 +52,7 @@ |
52 | 52 |
} |
53 | 53 |
|
54 | 54 |
# Default branch |
55 |
- my $base_branch_name = param('base_branch') || app->manager->default_branch($user, $project); |
|
55 |
+ my $base_branch_name = param('base_branch') || $api->manager->default_branch($user, $project); |
|
56 | 56 |
my $base_branch = $git->branch($user, $project, $base_branch_name); |
57 | 57 |
|
58 | 58 |
# No merged branches |
... | ... |
@@ -14,13 +14,13 @@ |
14 | 14 |
} |
15 | 15 |
|
16 | 16 |
# Repository is already exists |
17 |
- if (app->manager->exists_project($current_user, $project)) { |
|
17 |
+ if ($api->manager->exists_project($current_user, $project)) { |
|
18 | 18 |
$self->redirect_to("/$current_user/$project"); |
19 | 19 |
return; |
20 | 20 |
} |
21 | 21 |
# Fork |
22 | 22 |
else { |
23 |
- eval { app->manager->fork_project($current_user, $user, $project) }; |
|
23 |
+ eval { $api->manager->fork_project($current_user, $user, $project) }; |
|
24 | 24 |
if ($@) { |
25 | 25 |
$self->render_exception('Internal Error'); |
26 | 26 |
app->log->error("/$user/$project/fork: $@"); |
... | ... |
@@ -6,7 +6,7 @@ |
6 | 6 |
$rev = '' unless defined $rev; |
7 | 7 |
my $branches = stash('branches'); |
8 | 8 |
my $branches_count = $api->git->branches_count($user, $project); |
9 |
- my $default_branch_name = app->manager->default_branch($user, $project); |
|
9 |
+ my $default_branch_name = $api->manager->default_branch($user, $project); |
|
10 | 10 |
my $tags_count = $api->git->tags_count($user, $project); |
11 | 11 |
%> |
12 | 12 |
|
... | ... |
@@ -3,8 +3,8 @@ |
3 | 3 |
my $logined = $api->logined; |
4 | 4 |
my $current_user = session('user'); |
5 | 5 |
my $user = stash('user'); |
6 |
- my $original_user = app->manager->original_user($user, $project); |
|
7 |
- my $original_project = app->manager->original_project($user, $project); |
|
6 |
+ my $original_user = $api->manager->original_user($user, $project); |
|
7 |
+ my $original_project = $api->manager->original_project($user, $project); |
|
8 | 8 |
%> |
9 | 9 |
|
10 | 10 |
<div class="row" style="margin-bottom:10px"> |
... | ... |
@@ -6,7 +6,7 @@ |
6 | 6 |
my $branches = [map { $_->{name} } @{$api->git->branches($user, $project)}]; |
7 | 7 |
|
8 | 8 |
# Members |
9 |
- my $members = app->manager->members($user, $project); |
|
9 |
+ my $members = $api->manager->members($user, $project); |
|
10 | 10 |
|
11 | 11 |
# Members branches |
12 | 12 |
for my $member (@$members) { |
... | ... |
@@ -17,7 +17,7 @@ |
17 | 17 |
} |
18 | 18 |
|
19 | 19 |
# Default branch |
20 |
- my $default_branch = app->manager->default_branch($user, $project); |
|
20 |
+ my $default_branch = $api->manager->default_branch($user, $project); |
|
21 | 21 |
%> |
22 | 22 |
|
23 | 23 |
% layout 'common', title => "Network \x{30fb} $user/$project"; |
... | ... |
@@ -12,9 +12,9 @@ |
12 | 12 |
# Parameters |
13 | 13 |
my $user = param('user'); |
14 | 14 |
my $project = param('project'); |
15 |
- my $rev = app->manager->default_branch($user, $project); |
|
15 |
+ my $rev = $api->manager->default_branch($user, $project); |
|
16 | 16 |
|
17 |
- unless (app->manager->exists_project($user, $project)) { |
|
17 |
+ unless ($api->manager->exists_project($user, $project)) { |
|
18 | 18 |
$self->render_not_found; |
19 | 19 |
return; |
20 | 20 |
} |
... | ... |
@@ -3,7 +3,7 @@ |
3 | 3 |
|
4 | 4 |
# API |
5 | 5 |
my $api = gitprep_api; |
6 |
- my $manager = app->manager; |
|
6 |
+ my $manager = $api->manager; |
|
7 | 7 |
|
8 | 8 |
# Parameters |
9 | 9 |
my $op = param('op') || ''; |
... | ... |
@@ -37,11 +37,11 @@ |
37 | 37 |
my $to_project = $data->{'to-project'}; |
38 | 38 |
|
39 | 39 |
# Rename |
40 |
- if (app->manager->exists_project($user, $to_project)) { |
|
40 |
+ if ($api->manager->exists_project($user, $to_project)) { |
|
41 | 41 |
$errors = ["$to_project is already exists"]; |
42 | 42 |
} |
43 | 43 |
else { |
44 |
- eval { app->manager->rename_project($user, $project, $to_project) }; |
|
44 |
+ eval { $api->manager->rename_project($user, $project, $to_project) }; |
|
45 | 45 |
if (my $e = $@) { |
46 | 46 |
app->log->error($e); |
47 | 47 |
$errors = ['Internal Error']; |
... | ... |
@@ -76,7 +76,7 @@ |
76 | 76 |
# Change default branch |
77 | 77 |
elsif ($op eq 'default-branch' && $post) { |
78 | 78 |
my $default_branch = param('default-branch'); |
79 |
- eval { app->manager->default_branch($user, $project, $default_branch) }; |
|
79 |
+ eval { $api->manager->default_branch($user, $project, $default_branch) }; |
|
80 | 80 |
if (my $e = $@) { |
81 | 81 |
app->log->error("/$user/$project/settings?op=default-branch: $e"); |
82 | 82 |
$errors = ['Internal Error']; |
... | ... |
@@ -145,7 +145,7 @@ |
145 | 145 |
my $user = param('user'); |
146 | 146 |
my $project = param('project'); |
147 | 147 |
|
148 |
- eval { app->manager->delete_project($user, $project) }; |
|
148 |
+ eval { $api->manager->delete_project($user, $project) }; |
|
149 | 149 |
if (my $e = $@) { |
150 | 150 |
app->log->error("/$user/$project/settings: $e"); |
151 | 151 |
$errors = ['Internal Error']; |
... | ... |
@@ -265,7 +265,7 @@ |
265 | 265 |
<div class="border-gray radius-bottom" style="padding:5px 10px;border-top:none;"> |
266 | 266 |
<form action="<%= url_for->query(op => 'private') %>" method="post" style="margin-bottom:0px"> |
267 | 267 |
<span>Make this repository private</span> |
268 |
- % my $private = app->manager->is_private_project($user, $project); |
|
268 |
+ % my $private = $api->manager->is_private_project($user, $project); |
|
269 | 269 |
% if ($private) { |
270 | 270 |
% param('private', 1); |
271 | 271 |
% } |
... | ... |
@@ -308,7 +308,7 @@ |
308 | 308 |
|
309 | 309 |
<div id="rename-confirm" class="modal hide" tabindex="-1" role="dialog" aria-labelledby="rename-confirm-label" aria-hidden="true"> |
310 | 310 |
<div class="modal-header"> |
311 |
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> |
|
311 |
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">??</button> |
|
312 | 312 |
<div style="font-weight:bold">Are you sure you want to rename?</div> |
313 | 313 |
</div> |
314 | 314 |
<div class="modal-body"> |
... | ... |
@@ -333,7 +333,7 @@ |
333 | 333 |
|
334 | 334 |
<div id="delete-confirm" class="modal hide" tabindex="-1" role="dialog" aria-labelledby="delete-confirm-label" aria-hidden="true"> |
335 | 335 |
<div class="modal-header"> |
336 |
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> |
|
336 |
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">??</button> |
|
337 | 337 |
<div style="font-weight:bold">Are you ABSOLUTELY sure?</div> |
338 | 338 |
</div> |
339 | 339 |
<div class="modal-body"> |
... | ... |
@@ -1,7 +1,7 @@ |
1 | 1 |
<% |
2 | 2 |
# API |
3 | 3 |
my $api = gitprep_api; |
4 |
- my $manager = app->manager; |
|
4 |
+ my $manager = $api->manager; |
|
5 | 5 |
|
6 | 6 |
# Parameters |
7 | 7 |
my $op = param('op') || ''; |
... | ... |
@@ -11,11 +11,11 @@ |
11 | 11 |
my $user = param('user'); |
12 | 12 |
|
13 | 13 |
# Projects |
14 |
- unless (app->manager->exists_user($user)) { |
|
14 |
+ unless ($api->manager->exists_user($user)) { |
|
15 | 15 |
$self->render_not_found; |
16 | 16 |
return; |
17 | 17 |
} |
18 |
- my $projects = app->manager->projects($user); |
|
18 |
+ my $projects = $api->manager->projects($user); |
|
19 | 19 |
my $reps = []; |
20 | 20 |
for my $project (@$projects) { |
21 | 21 |
my $rep = $api->git->repository($user, $project->{name}) || {none => 1}; |