summaryrefslogtreecommitdiff
path: root/libpiny/lib/Piny/Repo.pm
diff options
context:
space:
mode:
Diffstat (limited to 'libpiny/lib/Piny/Repo.pm')
-rw-r--r--libpiny/lib/Piny/Repo.pm24
1 files changed, 14 insertions, 10 deletions
diff --git a/libpiny/lib/Piny/Repo.pm b/libpiny/lib/Piny/Repo.pm
index 134894c..cb3754f 100644
--- a/libpiny/lib/Piny/Repo.pm
+++ b/libpiny/lib/Piny/Repo.pm
@@ -382,7 +382,11 @@ sub all_repos {
# Only sets up needed data; ->rebuild takes care of the rest.
sub create {
- my ( $class, $name, $description ) = @_;
+ my ( $class, $name, $description, $source ) = @_;
+
+ if ( not defined $source) {
+ $source = Piny::Environment->config->piny_template;
+ };
my $user = Piny::Environment->instance->user;
@@ -393,15 +397,15 @@ sub create {
mkdir( $repo->path ) or die "The repo $name appears to already exist! ($!)";
- $ENV{"GIT_DIR"} = $repo->path;
- system( "/usr/bin/git", "init", "--bare", "--quiet", "--shared" ) and die "Could not initialize git repo!";
- delete $ENV{"GIT_DIR"};
-
-# if source repo is defined {
-# $ENV{"GIT_DIR"} = $source;
-# system( "/usr/bin/git", "push", "--mirror", $repo->path ) and die "Could not push refs to new repository!";
-# delete $ENV{"GIT_DIR"};
-# }
+ if ( defined $source ) {
+ $ENV{"GIT_DIR"} = $source;
+ system( "/usr/bin/git", "push", "--mirror", $repo->path ) and die "Could not push refs to new repository!";
+ delete $ENV{"GIT_DIR"};
+ } else {
+ $ENV{"GIT_DIR"} = $repo->path;
+ system( "/usr/bin/git", "init", "--bare", "--quiet", "--shared" ) and die "Could not initialize git repo!";
+ delete $ENV{"GIT_DIR"};
+ };
system( "/bin/chown", "-R", $user->name, $repo->path . "/objects" ) and die "Could not change ownership of $_ for repo: $!";