untrusted committers code seems to be fully working
authorJoey Hess <joey@kodama.kitenet.net>
Thu, 23 Oct 2008 22:05:57 +0000 (18:05 -0400)
committerJoey Hess <joey@kodama.kitenet.net>
Thu, 23 Oct 2008 22:05:57 +0000 (18:05 -0400)
Still need to investigate possible races, and test some more.

IkiWiki.pm
IkiWiki/Plugin/git.pm
debian/changelog
ikiwiki.in

index 698244187fd1f371f39f547f076889f5762fd265..1a55945a83f7ec5d1f1f06da675e1eebbb4ea8f6 100644 (file)
@@ -1582,8 +1582,8 @@ sub rcs_getctime ($) { #{{{
        $hooks{rcs}{rcs_getctime}{call}->(@_);
 } #}}}
 
-sub rcs_receive ($) { #{{{
-       $hooks{rcs}{rcs_receive}{call}->(@_);
+sub rcs_receive () { #{{{
+       $hooks{rcs}{rcs_receive}{call}->();
 } #}}}
 
 sub globlist_to_pagespec ($) { #{{{
index bdac6f7a1b4af0dfb8e59c92249dcbb4599c9b9f..e565f63691cfd09935338f33e6734a41b313f660 100644 (file)
@@ -365,8 +365,10 @@ sub git_commit_info ($;$) { #{{{
        # starting from the given sha1sum.
        my ($sha1, $num) = @_;
 
-       my @raw_lines = run_or_die('git', 'log',
-               (defined $num ? "--max-count=$num" : ""), 
+       my @opts;
+       push @opts, "--max-count=$num" if defined $num;
+
+       my @raw_lines = run_or_die('git', 'log', @opts,
                '--pretty=raw', '--raw', '--abbrev=40', '--always', '-c',
                '-r', $sha1, '--', '.');
        my ($prefix) = run_or_die('git', 'rev-parse', '--show-prefix');
@@ -645,7 +647,7 @@ sub rcs_receive () { #{{{
                                                eval q{use File::Temp};
                                                die $@ if $@;
                                                my $fh;
-                                               ($fh, $path)=tempfile("XXXXXXXXXX", UNLINK => 1);
+                                               ($fh, $path)=File::Temp::tempfile("XXXXXXXXXX", UNLINK => 1);
                                                if (system("git show ".$detail->{sha1_to}." > '$path'") != 0) {
                                                        error("failed writing temp file");
                                                }
@@ -678,7 +680,7 @@ sub rcs_receive () { #{{{
                }
        }
 
-       return @rets;
+       return reverse @rets;
 } #}}}
 
 1
index 49bd854475815387e05f5b8d608711e1c7919d00..d8e26e4c93a44d5f39d56af6a0277f07c84913dd 100644 (file)
@@ -33,6 +33,8 @@ ikiwiki (2.68) UNRELEASED; urgency=low
   * Updated Danish translation from Jonas Smedegaard. Closes: #503117
   * Optimise the no-op post-commit hook in the web edit case by skipping
     loading plugins. (Particularly a win when using external plugins.)
+  * Add support for checking pushes from untrusted git committers. This can be
+    used to set up anonymous git pushes, and other similar things.
 
  -- Joey Hess <joeyh@debian.org>  Fri, 17 Oct 2008 20:11:02 -0400
 
index 60663bc89cdf8e0283da54a4d7f0014f627582dd..d601d2739e64bdba76cfd5a852d18a36876d12ec 100755 (executable)
@@ -156,7 +156,8 @@ sub main () { #{{{
                                        if exists $config{setupsyslog};
                                delete @config{qw(setupsyslog setupverbose wrappers genwrappers rebuild)};
                                checkconfig();
-                               if (! $config{cgi} && ! $config{post_commit}) {
+                               if (! $config{cgi} && ! $config{post_commit} &&
+                                   ! $config{test_receive}) {
                                        $config{post_commit}=1;
                                }
                                gen_wrapper();