git: Added git_wrapper_background_command option. Can be used to eg, make the git...
[ikiwiki.git] / IkiWiki / Plugin / git.pm
index 3e289e0c3f630adb9f0284f81f7233338fb70e38..0f92476c94403df7b52a28f62e0f4a17d5988794 100644 (file)
@@ -41,6 +41,7 @@ sub checkconfig () {
                push @{$config{wrappers}}, {
                        wrapper => $config{git_wrapper},
                        wrappermode => (defined $config{git_wrappermode} ? $config{git_wrappermode} : "06755"),
+                       wrapper_background_command => $config{git_wrapper_background_command},
                };
        }
 
@@ -78,6 +79,13 @@ sub getsetup () {
                        safe => 0, # file
                        rebuild => 0,
                },
+               git_wrapper_background_command => {
+                       type => "string",
+                       example => "git push github",
+                       description => "shell command for git_wrapper to run, in the background",
+                       safe => 0, # command
+                       rebuild => 0,
+               },
                git_wrappermode => {
                        type => "string",
                        example => '06755',
@@ -507,8 +515,8 @@ sub rcs_commit_staged (@) {
                        $u=encode_utf8($u);
                        $ENV{GIT_AUTHOR_NAME}=$u;
                }
-               if (defined $params{session}->param("username")) {
-                       $u=encode_utf8($params{session}->param("username"));
+               if (defined $params{session}->param("nickname")) {
+                       $u=encode_utf8($params{session}->param("nickname"));
                }
                if (defined $u) {
                        $ENV{GIT_AUTHOR_EMAIL}="$u\@web";
@@ -606,12 +614,16 @@ sub rcs_recentchanges ($) {
                        push @messages, { line => $line };
                }
 
-               my $user=$ci->{'author_name'};
-               my $usershort=$ci->{'author_username'};
+               my $user=$ci->{'author_username'};
                my $web_commit = ($ci->{'author'} =~ /\@web>/);
-
-               if ($usershort =~ /:\/\//) {
-                       $usershort=undef; # url; not really short
+               my $nickname;
+
+               # Set nickname only if a non-url author_username is available,
+               # and author_name is an url.
+               if ($user !~ /:\/\// && defined $ci->{'author_name'} &&
+                   $ci->{'author_name'} =~ /:\/\//) {
+                       $nickname=$user;
+                       $user=$ci->{'author_name'};
                }
 
                # compatability code for old web commit messages
@@ -626,7 +638,7 @@ sub rcs_recentchanges ($) {
                push @rets, {
                        rev        => $sha1,
                        user       => $user,
-                       usershort  => $usershort,
+                       nickname   => $nickname,
                        committype => $web_commit ? "web" : "git",
                        when       => $when,
                        message    => [@messages],