diff --git a/src/gl-compile-conf b/src/gl-compile-conf index 69b2ccb..6ca9b9b 100755 --- a/src/gl-compile-conf +++ b/src/gl-compile-conf @@ -107,8 +107,9 @@ my %rurp_seen = (); # catch usernames<->pubkeys mismatches; search for "lint" below my %user_list = (); -# gitweb descriptions, plain text, keyed by repo +# gitweb descriptions and owners; plain text, keyed by "$repo.git" my %desc = (); +my %owner = (); # set the umask before creating any files umask($REPO_UMASK); @@ -253,14 +254,18 @@ sub parse_conf_file } } } - # very simple syntax for the gitweb description of repo - elsif (/^(\S+) = "(.*)"$/) + # very simple syntax for the gitweb description of repo; one of: + # reponame = "some description string" + # reponame "owner name" = "some description string" + elsif (/^(\S+)(?: "(.*?)")? = "(.*)"$/) { - my ($repo, $desc) = ($1, $2); + my ($repo, $owner, $desc) = ($1, $2, $3); die "$ABRT bad repo name $repo\n" unless $repo =~ $REPONAME_PATT; die "$WARN $fragment attempting to set description for $repo\n" if $fragment ne 'master' and $fragment ne $repo and ($groups{"\@$fragment"}{$repo} || '') ne 'master'; - $desc{$repo} = $desc; + $desc{"$repo.git"} = $desc; + $owner =~ s/ /+/g if $owner; # gitweb/INSTALL wants more, but meh...! + $owner{"$repo.git"} = $owner || ''; } else { @@ -375,10 +380,10 @@ my %projlist = (); for my $repo (sort keys %repos) { my $desc_file = "$repo.git/description"; # note: having a description also counts as enabling gitweb - if ($repos{$repo}{'R'}{'gitweb'} or $desc{$repo}) { + if ($repos{$repo}{'R'}{'gitweb'} or $desc{"$repo.git"}) { $projlist{"$repo.git"} = 1; # add the description file; no messages to user or error checking :) - $desc{$repo} and open(DESC, ">", $desc_file) and print DESC "$desc{$repo}\n" and close DESC; + $desc{"$repo.git"} and open(DESC, ">", $desc_file) and print DESC $desc{"$repo.git"} . "\n" and close DESC; } else { # delete the description file; no messages to user or error checking :) unlink $desc_file; @@ -387,7 +392,9 @@ for my $repo (sort keys %repos) { # update the project list my $projlist_fh = wrap_open( ">", $PROJECTS_LIST); -print $projlist_fh join("\n", sort keys %projlist), "\n" if %projlist; +for my $proj (sort keys %projlist) { + print $projlist_fh "$proj" . ( $owner{$proj} ? " $owner{$proj}" : "" ) . "\n"; +} close $projlist_fh; # ----------------------------------------------------------------------------