From ab2df0b7b3ff8020abadd9ad338600e771064961 Mon Sep 17 00:00:00 2001 From: Joe Rayhawk Date: Mon, 30 May 2011 23:55:18 -0700 Subject: Adding primitive cloning support --- libpiny/lib/Piny/Repo.pm | 4 ++-- pinyadmin/sbin/newrepo | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/libpiny/lib/Piny/Repo.pm b/libpiny/lib/Piny/Repo.pm index 82f651d..8a26563 100644 --- a/libpiny/lib/Piny/Repo.pm +++ b/libpiny/lib/Piny/Repo.pm @@ -473,8 +473,8 @@ sub create { chdir( "/srv/git" ); # so git-clone can do the work of resolving local repo names for us if ( defined $source ) { - system( "/bin/chown", $user . "." . $user, $repo->path ) and die "Could not change ownership of repo path!"; # permissions are overridden later - if ( system( "/usr/bin/sudo", "-u", $user, "/usr/bin/git", "clone", "--bare", "--no-hardlinks", "--quiet", $source, $repo->path ) ) { # sudo -u $user needed in order to test user readability of whatever they want to clone. the mode o+rx should probably be masked off if we want private repos to stay private. + system( "/bin/chown", $user->name, $repo->path ) and die "Could not change ownership of repo path!"; # permissions are overridden later + if ( system( "/usr/bin/sudo", "-u", $user->name, "/usr/bin/git", "clone", "--bare", "--no-hardlinks", "--quiet", $source, $repo->path ) ) { # sudo -u $user needed in order to test user readability of whatever they want to clone. the mode o+rx should probably be masked off if we want private repos to stay private. system( "/bin/rm", "-r", $repo->path ) and die "Failed to clean up after failed clone operation!"; die( "Could not clone repository!\n" ); }; diff --git a/pinyadmin/sbin/newrepo b/pinyadmin/sbin/newrepo index 0a6cdf0..a13a0dc 100755 --- a/pinyadmin/sbin/newrepo +++ b/pinyadmin/sbin/newrepo @@ -7,12 +7,12 @@ use Moose::Util::TypeConstraints qw( find_type_constraint ); use Piny; -my ( $batch, $name ); +my ( $batch, $name, $remote ); if ( $ARGV[0] eq "--batch" ) { - ( $batch, $name ) = @ARGV; + ( $batch, $name, $remote ) = @ARGV; } else { - ( $name ) = @ARGV; + ( $name, $remote ) = @ARGV; }; if ( not defined $name ) { @@ -59,9 +59,20 @@ A new piny repo ``$name'' has been created. Description: $description END + +if( defined( $remote ) ) { + print( MAIL "\nRemote: $remote\n" ); +}; + close( MAIL ); -my $repo = Piny::Repo->create( $name, $description ); +my $repo; + +if( defined( $remote ) ) { + $repo = Piny::Repo->create( $name, $description, $remote ); +} else { + $repo = Piny::Repo->create( $name, $description ); +}; print "Repo URL: " . $repo->ikiwiki_url . "\n"; print "Repo URL: " . $repo->cgit_url . "\n"; -- cgit v1.2.3