Showing 5 changed files with 65 additions and 55 deletions
+53 -38
lib/Gitprep/Git.pm
... ...
@@ -40,7 +40,7 @@ sub branch_status {
40 40
   
41 41
   # Branch status
42 42
   my $status = {ahead => 0, behind => 0};
43
-  my @cmd = $self->cmd_remote(
43
+  my @cmd = $self->cmd(
44 44
     $user,
45 45
     $project,
46 46
     'rev-list',
... ...
@@ -65,7 +65,7 @@ sub no_merged_branch_h {
65 65
   {
66 66
     my $rep = $self->rep($user, $project);
67 67
     
68
-    my @cmd = $self->cmd_remote($user, $project, 'branch', '--no-merged');
68
+    my @cmd = $self->cmd($user, $project, 'branch', '--no-merged');
69 69
     open my $fh, '-|', @cmd or return;
70 70
     my @lines = <$fh>;
71 71
     for my $branch_name (@lines) {
... ...
@@ -84,7 +84,7 @@ sub branches {
84 84
   my ($self, $user, $project) = @_;
85 85
   
86 86
   # Branches
87
-  my @cmd = $self->cmd_remote($user, $project, 'branch');
87
+  my @cmd = $self->cmd($user, $project, 'branch');
88 88
   open my $fh, '-|', @cmd or return;
89 89
   my $branches = [];
90 90
   my $start;
... ...
@@ -114,7 +114,7 @@ sub branches_count {
114 114
   my ($self, $user, $project) = @_;
115 115
   
116 116
   # Branches count
117
-  my @cmd = $self->cmd_remote($user, $project, 'branch');
117
+  my @cmd = $self->cmd($user, $project, 'branch');
118 118
   open my $fh, '-|', @cmd or return;
119 119
   my @branches = <$fh>;
120 120
   my $branches_count = @branches;
... ...
@@ -122,27 +122,42 @@ sub branches_count {
122 122
   return $branches_count;
123 123
 }
124 124
 
125
-sub cmd_remote {
125
+sub cmd {
126 126
   my ($self, $user, $project, @cmd) = @_;
127 127
   
128 128
   # Git command
129 129
   my $home = $self->rep_home;
130 130
   my $rep = "$home/$user/$project.git";
131 131
   
132
-  return $self->cmd_remote_dir($rep, @cmd);
132
+  return $self->cmd_dir($rep, @cmd);
133 133
 }
134 134
 
135
-sub cmd_remote_dir {
136
-  my ($self, $rep, @cmd) = @_;
135
+sub cmd_dir {
136
+  my ($self, $dir, @cmd) = @_;
137 137
   
138
-  return ($self->bin, "--git-dir=$rep", @cmd);
138
+  return ($self->bin, "--git-dir=$dir", @cmd);
139
+}
140
+
141
+sub cmd_working {
142
+  my ($self, $user, $project, @cmd) = @_;
143
+  
144
+  # Git command
145
+  my $working_dir = $self->home->rel_file("/data/work/$user/$project");
146
+  
147
+  return $self->cmd_working_dir($working_dir, @cmd);
148
+}
149
+
150
+sub cmd_working_dir {
151
+  my ($self, $dir, @cmd) = @_;
152
+  
153
+  return ($self->bin, "--git-dir=$dir", "--work-tree=$dir",  @cmd);
139 154
 }
140 155
 
141 156
 sub authors {
142 157
   my ($self, $user, $project, $rev, $file) = @_;
143 158
   
144 159
   # Authors
145
-  my @cmd = $self->cmd_remote(
160
+  my @cmd = $self->cmd(
146 161
     $user,
147 162
     $project,
148 163
     'log',
... ...
@@ -172,7 +187,7 @@ sub blame {
172 187
     or croak 'Cannot find file';
173 188
   
174 189
   # Git blame
175
-  my @cmd = $self->cmd_remote(
190
+  my @cmd = $self->cmd(
176 191
     $user,
177 192
     $project,
178 193
     'blame',
... ...
@@ -271,7 +286,7 @@ sub blob {
271 286
   # Blob
272 287
   my $hash = $self->path_to_hash($user, $project, $rev, $file, 'blob')
273 288
     or croak 'Cannot find file';
274
-  my @cmd = $self->cmd_remote(
289
+  my @cmd = $self->cmd(
275 290
     $user,
276 291
     $project,
277 292
     'cat-file',
... ...
@@ -303,7 +318,7 @@ sub blob_diffs {
303 318
   return unless defined $rev1 && defined $rev2;
304 319
   
305 320
   # Diff tree
306
-  my @cmd = $self->cmd_remote(
321
+  my @cmd = $self->cmd(
307 322
     $user,
308 323
     $project,
309 324
     'diff-tree',
... ...
@@ -341,7 +356,7 @@ sub blob_diffs {
341 356
     my $file = $diffinfo->{to_file};
342 357
     
343 358
     # Blob diff
344
-    my @cmd = $self->cmd_remote(
359
+    my @cmd = $self->cmd(
345 360
       $user,
346 361
       $project,
347 362
       'diff-tree',
... ...
@@ -404,7 +419,7 @@ sub blob_mime_type {
404 419
   # Blob
405 420
   my $hash = $self->path_to_hash($user, $project, $rev, $file, 'blob')
406 421
     or croak 'Cannot find file';
407
-  my @cmd = $self->cmd_remote(
422
+  my @cmd = $self->cmd(
408 423
     $user,
409 424
     $project,
410 425
     'cat-file',
... ...
@@ -449,7 +464,7 @@ sub blob_mode {
449 464
   
450 465
   # Blob mode
451 466
   $file =~ s#/+$##;
452
-  my @cmd = $self->cmd_remote(
467
+  my @cmd = $self->cmd(
453 468
     $user,
454 469
     $project,
455 470
     'ls-tree',
... ...
@@ -471,7 +486,7 @@ sub blob_raw {
471 486
   my ($self, $user, $project, $rev, $path) = @_;
472 487
   
473 488
   # Blob raw
474
-  my @cmd = $self->cmd_remote($user, $project, 'cat-file', 'blob', "$rev:$path");
489
+  my @cmd = $self->cmd($user, $project, 'cat-file', 'blob', "$rev:$path");
475 490
   open my $fh, "-|", @cmd
476 491
     or croak 500, "Open git-cat-file failed";
477 492
   local $/;
... ...
@@ -486,7 +501,7 @@ sub blob_size {
486 501
   my ($self, $user, $project, $rev, $file) = @_;
487 502
   
488 503
   # Blob size(KB)
489
-  my @cmd = $self->cmd_remote(
504
+  my @cmd = $self->cmd(
490 505
     $user,
491 506
     $project,
492 507
     'cat-file',
... ...
@@ -520,7 +535,7 @@ sub commits_number {
520 535
   my ($self, $user, $project, $ref) = @_;
521 536
   
522 537
   # Command "git diff-tree"
523
-  my @cmd = $self->cmd_remote($user, $project, 'shortlog', '-s', $ref);
538
+  my @cmd = $self->cmd($user, $project, 'shortlog', '-s', $ref);
524 539
   open my $fh, "-|", @cmd
525 540
     or croak 500, "Open git-shortlog failed";
526 541
   my @commits_infos = <$fh>;
... ...
@@ -542,7 +557,7 @@ sub exists_branch {
542 557
   
543 558
   # Exists branch
544 559
   my $home = $self->rep_home;
545
-  my @cmd = $self->cmd_remote($user, $project, 'branch');
560
+  my @cmd = $self->cmd($user, $project, 'branch');
546 561
   open my $fh, "-|", @cmd
547 562
     or croak 'git branch failed';
548 563
   local $/;
... ...
@@ -564,7 +579,7 @@ sub delete_branch {
564 579
   }
565 580
   
566 581
   if ($exists) {
567
-    my @cmd = $self->cmd_remote($user, $project, 'branch', '-D', $branch);
582
+    my @cmd = $self->cmd($user, $project, 'branch', '-D', $branch);
568 583
     Gitprep::Util::run_command(@cmd)
569 584
       or croak "Branch deleting failed. Can't delete branch $branch";
570 585
   }
... ...
@@ -606,7 +621,7 @@ sub diff_tree {
606 621
   $parent = '--root' unless defined $parent;
607 622
 
608 623
   # Get diff tree
609
-  my @cmd = $self->cmd_remote(
624
+  my @cmd = $self->cmd(
610 625
     $user,
611 626
     $project,
612 627
     "diff-tree",
... ...
@@ -697,7 +712,7 @@ sub forward_commits {
697 712
   my ($self, $user, $project, $rev1, $rev2) = @_;
698 713
   
699 714
   # Forwarding commits
700
-  my @cmd = $self->cmd_remote(
715
+  my @cmd = $self->cmd(
701 716
     $user,
702 717
     $project,
703 718
     'rev-list',
... ...
@@ -723,7 +738,7 @@ sub path_to_hash {
723 738
   
724 739
   # Get blob id or tree id (command "git ls-tree")
725 740
   $path =~ s#/+$##;
726
-  my @cmd = $self->cmd_remote(
741
+  my @cmd = $self->cmd(
727 742
     $user,
728 743
     $project,
729 744
     'ls-tree',
... ...
@@ -748,7 +763,7 @@ sub last_activity {
748 763
   my ($self, $user, $project) = @_;
749 764
   
750 765
   # Command "git for-each-ref"
751
-  my @cmd = $self->cmd_remote(
766
+  my @cmd = $self->cmd(
752 767
     $user,
753 768
     $project,
754 769
     'for-each-ref',
... ...
@@ -775,7 +790,7 @@ sub last_activity {
775 790
 sub no_merged_branches_count {
776 791
   my ($self, $user, $project) = @_;
777 792
   
778
-  my @cmd = $self->cmd_remote($user, $project, 'branch', '--no-merged');
793
+  my @cmd = $self->cmd($user, $project, 'branch', '--no-merged');
779 794
   open my $fh, '-|', @cmd or return;
780 795
   my @branches = <$fh>;
781 796
   my $branches_count = @branches;
... ...
@@ -790,7 +805,7 @@ sub path_by_id {
790 805
   return unless $hash;
791 806
   
792 807
   # Command "git ls-tree"
793
-  my @cmd = $self->cmd_remote($user, $project, 'ls-tree', '-r', '-t', '-z', $base);
808
+  my @cmd = $self->cmd($user, $project, 'ls-tree', '-r', '-t', '-z', $base);
794 809
   open my $fh, '-|', @cmd or return;
795 810
 
796 811
   # Get path
... ...
@@ -814,7 +829,7 @@ sub parse_rev_path {
814 829
   my ($self, $user, $project, $rev_path) = @_;
815 830
   
816 831
   # References
817
-  my @cmd = $self->cmd_remote(
832
+  my @cmd = $self->cmd(
818 833
     $user,
819 834
     $project,
820 835
     'show-ref',
... ...
@@ -864,7 +879,7 @@ sub object_type {
864 879
   my ($self, $user, $project, $rev) = @_;
865 880
   
866 881
   # Get object type
867
-  my @cmd = $self->cmd_remote(
882
+  my @cmd = $self->cmd(
868 883
     $user,
869 884
     $project,
870 885
     'cat-file',
... ...
@@ -929,7 +944,7 @@ sub references {
929 944
   $type ||= '';
930 945
   
931 946
   # Branches or tags
932
-  my @cmd = $self->cmd_remote(
947
+  my @cmd = $self->cmd(
933 948
     $user,
934 949
     $project,
935 950
     'show-ref',
... ...
@@ -997,7 +1012,7 @@ sub tags_count {
997 1012
   my $limit = 1000;
998 1013
   
999 1014
   # Get tags
1000
-  my @cmd = $self->cmd_remote(
1015
+  my @cmd = $self->cmd(
1001 1016
     $user,
1002 1017
     $project,
1003 1018
     'for-each-ref',
... ...
@@ -1020,7 +1035,7 @@ sub tags {
1020 1035
   $offset ||= 0;
1021 1036
   
1022 1037
   # Get tags
1023
-  my @cmd = $self->cmd_remote(
1038
+  my @cmd = $self->cmd(
1024 1039
     $user,
1025 1040
     $project,
1026 1041
     'for-each-ref',
... ...
@@ -1109,7 +1124,7 @@ sub last_change_commit {
1109 1124
   my $commit_log = {};
1110 1125
   $file = '' unless defined $file;
1111 1126
   
1112
-  my @cmd = $self->cmd_remote(
1127
+  my @cmd = $self->cmd(
1113 1128
     $user,
1114 1129
     $project,
1115 1130
     '--no-pager',
... ...
@@ -1221,7 +1236,7 @@ sub get_commit {
1221 1236
   my ($self, $user, $project, $id) = @_;
1222 1237
   
1223 1238
   # Git rev-list
1224
-  my @cmd = $self->cmd_remote(
1239
+  my @cmd = $self->cmd(
1225 1240
     $user,
1226 1241
     $project,
1227 1242
     'rev-list',
... ...
@@ -1356,7 +1371,7 @@ sub get_commits {
1356 1371
   # Get Commits
1357 1372
   $maxcount ||= 1;
1358 1373
   $skip ||= 0;
1359
-  my @cmd = $self->cmd_remote(
1374
+  my @cmd = $self->cmd(
1360 1375
     $user,
1361 1376
     $project,
1362 1377
     'rev-list',
... ...
@@ -1493,7 +1508,7 @@ sub import_branch {
1493 1508
   
1494 1509
   # Git pull
1495 1510
   my $remote_rep = $self->rep($remote_user, $remote_project);
1496
-  my @cmd = $self->cmd_remote(
1511
+  my @cmd = $self->cmd(
1497 1512
     $user,
1498 1513
     $project,
1499 1514
     'fetch',
... ...
@@ -1533,7 +1548,7 @@ sub separated_commit {
1533 1548
   my ($self, $user, $project, $rev1, $rev2) = @_;
1534 1549
   
1535 1550
   # Command "git diff-tree"
1536
-  my @cmd = $self->cmd_remote(
1551
+  my @cmd = $self->cmd(
1537 1552
     $user,
1538 1553
     $project,
1539 1554
     'show-branch',
... ...
@@ -1618,7 +1633,7 @@ sub trees {
1618 1633
   }
1619 1634
   my @entries = ();
1620 1635
   my $show_sizes = 0;
1621
-  my @cmd = $self->cmd_remote(
1636
+  my @cmd = $self->cmd(
1622 1637
     $user,
1623 1638
     $project,
1624 1639
     'ls-tree',
+8 -13
lib/Gitprep/Manager.pm
... ...
@@ -664,7 +664,7 @@ sub _create_rep {
664 664
   eval {
665 665
     # Git init
666 666
     {
667
-      my @git_init_cmd = $git->cmd_remote_dir($rep, 'init', '--bare');
667
+      my @git_init_cmd = $git->cmd_dir($rep, 'init', '--bare');
668 668
       Gitprep::Util::run_command(@git_init_cmd)
669 669
         or croak  "Can't execute git init --bare:@git_init_cmd";
670 670
     }
... ...
@@ -677,7 +677,7 @@ sub _create_rep {
677 677
     }
678 678
     
679 679
     # HTTP support
680
-    my @git_update_server_info_cmd = $git->cmd_remote_dir(
680
+    my @git_update_server_info_cmd = $git->cmd_dir(
681 681
       $rep,
682 682
       '--bare',
683 683
       'update-server-info'
... ...
@@ -710,7 +710,7 @@ sub _create_rep {
710 710
         or croak "Can't create directory $temp_work: $!";
711 711
       
712 712
       # Git init
713
-      my @git_init_cmd = $git->cmd_remote_dir($temp_work, 'init', '-q');
713
+      my @git_init_cmd = $git->cmd_dir($temp_work, 'init', '-q');
714 714
       Gitprep::Util::run_command(@git_init_cmd)
715 715
         or croak "Can't execute git init: @git_init_cmd";
716 716
       
... ...
@@ -722,9 +722,8 @@ sub _create_rep {
722 722
       print $readme_fh "\n" . encode('UTF-8', $description) . "\n";
723 723
       close $readme_fh;
724 724
       
725
-      my @git_add_cmd = $git->cmd_remote_dir(
725
+      my @git_add_cmd = $git->cmd_working_dir(
726 726
         $temp_work,
727
-        "--work-tree=$temp_work",
728 727
         'add',
729 728
         'README.md'
730 729
       );
... ...
@@ -732,9 +731,8 @@ sub _create_rep {
732 731
         or croak "Can't execute git add: @git_add_cmd";
733 732
       
734 733
       # Set user name
735
-      my @git_config_user_name = $git->cmd_remote_dir(
734
+      my @git_config_user_name = $git->cmd_working_dir(
736 735
         $temp_work,
737
-        "--work-tree=$temp_work",
738 736
         'config',
739 737
         'user.name',
740 738
         $user
... ...
@@ -744,9 +742,8 @@ sub _create_rep {
744 742
       
745 743
       # Set user mail
746 744
       my $user_mail = $self->app->dbi->model('user')->select('mail', where => {id => $user})->value;
747
-      my @git_config_user_mail = $git->cmd_remote_dir(
745
+      my @git_config_user_mail = $git->cmd_working_dir(
748 746
         $temp_work,
749
-        "--work-tree=$temp_work",
750 747
         'config',
751 748
         'user.email',
752 749
         "$user_mail"
... ...
@@ -755,9 +752,8 @@ sub _create_rep {
755 752
         or croak "Can't execute git config: @git_config_user_mail";
756 753
       
757 754
       # Commit
758
-      my @git_commit_cmd = $git->cmd_remote_dir(
755
+      my @git_commit_cmd = $git->cmd_working_dir(
759 756
         $temp_work,
760
-        "--work-tree=$temp_work",
761 757
         'commit',
762 758
         '-q',
763 759
         '-m',
... ...
@@ -768,9 +764,8 @@ sub _create_rep {
768 764
       
769 765
       # Push
770 766
       {
771
-        my @git_push_cmd = $git->cmd_remote_dir(
767
+        my @git_push_cmd = $git->cmd_working_dir(
772 768
           $temp_work,
773
-          "--work-tree=$temp_work",
774 769
           'push',
775 770
           '-q',
776 771
           $rep,
+1 -1
templates/archive.html.ep
... ...
@@ -40,7 +40,7 @@
40 40
     );
41 41
   };
42 42
   my $cmd = $quote->(
43
-    $git->cmd_remote(
43
+    $git->cmd(
44 44
       $user,
45 45
       $project,
46 46
       'archive',
+2 -2
templates/smart-http/info-refs.html.ep
... ...
@@ -15,7 +15,7 @@
15 15
     substr($service_cmd, 0, 4, '');
16 16
     
17 17
     my $rep = $git->rep($user, $project);
18
-    my @cmd = $git->cmd_remote($user, $project, $service_cmd, '--stateless-rpc', '--advertise-refs', $rep);
18
+    my @cmd = $git->cmd($user, $project, $service_cmd, '--stateless-rpc', '--advertise-refs', $rep);
19 19
     
20 20
     my ($cout, $cerr) = (Symbol::gensym, Symbol::gensym);
21 21
     my $pid = IPC::Open3::open3(my $cin, $cout, $cerr, @cmd );
... ...
@@ -58,7 +58,7 @@
58 58
   # Dumb HTTP
59 59
   else {
60 60
     # Update server info
61
-    my @cmd = $git->cmd_remote($user, $project, 'update-server-info');
61
+    my @cmd = $git->cmd($user, $project, 'update-server-info');
62 62
     open my $fh, '-|', @cmd
63 63
       or die "Can't open pipe for @cmd:$!";
64 64
     close $fh
+1 -1
templates/smart-http/service.html.ep
... ...
@@ -10,7 +10,7 @@
10 10
   my $git = app->git;
11 11
   
12 12
   my $rep_dir = $git->rep($user, $project);
13
-  my @cmd = $git->cmd_remote($user, $project, $service, '--stateless-rpc', $rep_dir);
13
+  my @cmd = $git->cmd($user, $project, $service, '--stateless-rpc', $rep_dir);
14 14
   
15 15
   # Command
16 16
   my ($cout, $cerr) = (Symbol::gensym, Symbol::gensym);