| ... | ... |
@@ -1,7 +1,7 @@ |
| 1 | 1 |
1.4 |
| 2 | 2 |
- fix markdown bugs (*em*, _em_) |
| 3 | 3 |
- default readme file is changed. README is changed to README.md |
| 4 |
- - add private repository feature |
|
| 4 |
+ - add private repository and collaborator feature |
|
| 5 | 5 |
1.3 |
| 6 | 6 |
- add README.md support |
| 7 | 7 |
- add submodule support |
| ... | ... |
@@ -18,7 +18,7 @@ use Validator::Custom; |
| 18 | 18 |
eval {require Digest::SHA; import Digest::SHA qw(sha1 sha1_hex)};
|
| 19 | 19 |
} |
| 20 | 20 |
|
| 21 |
-our $VERSION = '1.0301'; |
|
| 21 |
+our $VERSION = '1.04'; |
|
| 22 | 22 |
|
| 23 | 23 |
has 'dbi'; |
| 24 | 24 |
has 'git'; |
| ... | ... |
@@ -46,6 +46,7 @@ sub is_collaborator {
|
| 46 | 46 |
my ($self, $user, $project, $session_user) = @_; |
| 47 | 47 |
|
| 48 | 48 |
$session_user = $self->cntl->session('user') unless defined $session_user;
|
| 49 |
+ return unless $session_user; |
|
| 49 | 50 |
|
| 50 | 51 |
my $row = $self->app->dbi->model('collaboration')->select(
|
| 51 | 52 |
id => [$user, $project, $session_user] |
| ... | ... |
@@ -50,8 +50,12 @@ sub fork_project {
|
| 50 | 50 |
$dbi->connector->txn(sub {
|
| 51 | 51 |
|
| 52 | 52 |
# Original project id |
| 53 |
- my $original_pid = $dbi->model('project')
|
|
| 54 |
- ->select('original_pid', id => [$original_user, $project])->value;
|
|
| 53 |
+ my $project_info = $dbi->model('project')->select(
|
|
| 54 |
+ ['original_pid', 'private'], |
|
| 55 |
+ id => [$original_user, $project] |
|
| 56 |
+ )->one; |
|
| 57 |
+ |
|
| 58 |
+ my $original_pid = $project_info->{original_pid};
|
|
| 55 | 59 |
|
| 56 | 60 |
croak "Can't get original project id" |
| 57 | 61 |
unless defined $original_pid && $original_pid > 0; |
| ... | ... |
@@ -63,7 +67,8 @@ sub fork_project {
|
| 63 | 67 |
$project, |
| 64 | 68 |
{
|
| 65 | 69 |
original_user => $original_user, |
| 66 |
- original_pid => $original_pid |
|
| 70 |
+ original_pid => $original_pid, |
|
| 71 |
+ private => $project_info->{private}
|
|
| 67 | 72 |
} |
| 68 | 73 |
); |
| 69 | 74 |
}; |
| ... | ... |
@@ -464,9 +469,9 @@ sub _create_rep {
|
| 464 | 469 |
or croak "Can't move post-update"; |
| 465 | 470 |
|
| 466 | 471 |
# Description |
| 472 |
+ my $description = $opts->{description};
|
|
| 473 |
+ $description = '' unless defined $description; |
|
| 467 | 474 |
{
|
| 468 |
- my $description = $opts->{description};
|
|
| 469 |
- $description = '' unless defined $description; |
|
| 470 | 475 |
my $file = "$rep/description"; |
| 471 | 476 |
open my $fh, '>', $file |
| 472 | 477 |
or croak "Can't open $file: $!"; |
| ... | ... |
@@ -493,7 +498,8 @@ sub _create_rep {
|
| 493 | 498 |
my $file = "$temp_work/README.md"; |
| 494 | 499 |
open my $readme_fh, '>', $file |
| 495 | 500 |
or croak "Can't create $file: $!"; |
| 496 |
- print $readme_fh "$project\n=====\n"; |
|
| 501 |
+ print $readme_fh "# $project\n"; |
|
| 502 |
+ print $readme_fh "\n" . encode('UTF-8', $description) . "\n";
|
|
| 497 | 503 |
close $readme_fh; |
| 498 | 504 |
|
| 499 | 505 |
my @git_add_cmd = $git->cmd_rep( |
| ... | ... |
@@ -320,6 +320,7 @@ note 'Profile'; |
| 320 | 320 |
$t->content_like(qr/t2\.git/); |
| 321 | 321 |
$t->content_like(qr/README\.md/); |
| 322 | 322 |
$t->content_like(qr/kimoto1\@localhost/); |
| 323 |
+ $t->content_like(qr/Hello/); |
|
| 323 | 324 |
|
| 324 | 325 |
# Settings page(don't has README) |
| 325 | 326 |
$t->get_ok('/kimoto1/t1/settings');
|