diff --git a/src/gitolite.pm b/src/gitolite.pm index 14b7cf3..5d51978 100644 --- a/src/gitolite.pm +++ b/src/gitolite.pm @@ -123,7 +123,10 @@ sub new_repo # erm, note that's "and die" not "or die" as is normal in perl wrap_chdir("$repo.git"); system("git --bare init >&2"); - system("echo $creater > gl-creater") if $creater; + if ($creater) { + system("echo $creater > gl-creater"); + system("git", "config", "gitweb.owner", $creater); + } # propagate our own, plus any local admin-defined, hooks system("cp $hooks_dir/* hooks/"); chmod 0755, "hooks/update"; @@ -177,6 +180,26 @@ sub get_set_perms } } +# ---------------------------------------------------------------------------- +# getdesc and setdesc +# ---------------------------------------------------------------------------- + +sub get_set_desc +{ + my($repo_base_abs, $repo, $verb, $user) = @_; + my ($creater, $dummy, $dummy2) = &repo_rights($repo_base_abs, $repo, ""); + die "$repo doesnt exist or is not yours\n" unless $user eq $creater; + wrap_chdir("$repo_base_abs"); + wrap_chdir("$repo.git"); + if ($verb eq 'getdesc') { + system("cat", "description") if -f "description"; + } else { + system("cat > description"); + print "New description is:\n"; + system("cat", "description"); + } +} + # ---------------------------------------------------------------------------- # parse the compiled acl # ---------------------------------------------------------------------------- diff --git a/src/gl-auth-command b/src/gl-auth-command index dab635a..dc6aca5 100755 --- a/src/gl-auth-command +++ b/src/gl-auth-command @@ -103,7 +103,7 @@ unless ($ENV{SSH_ORIGINAL_COMMAND}) { # get and set perms for actual repo created by wildcard-autoviv # ---------------------------------------------------------------------------- -my $CUSTOM_COMMANDS=qr/^\s*(expand|getperms|setperms)\s/; +my $CUSTOM_COMMANDS=qr/^\s*(expand|(get|set)(perms|desc))\s/; # note that all the subs called here chdir somewhere else and do not come # back; they all blithely take advantage of the fact that processing custom @@ -116,6 +116,10 @@ if ($ENV{SSH_ORIGINAL_COMMAND} =~ $CUSTOM_COMMANDS) { # with an actual reponame, you can "getperms" or "setperms" get_set_perms($repo_base_abs, $repo, $verb, $user); } + elsif ($repo =~ $REPONAME_PATT and $verb =~ /(get|set)desc/) { + # with an actual reponame, you can "getdesc" or "setdesc" + get_set_desc($repo_base_abs, $repo, $verb, $user); + } elsif ($verb eq 'expand') { # with a wildcard, you can "expand" it to see what repos actually match die "$repo has invalid characters" unless "x$repo" =~ $REPOPATT_PATT;