aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-10-23 18:05:57 -0400
committerJoey Hess <joey@kodama.kitenet.net>2008-10-23 18:05:57 -0400
commit85f4b99710fa94b9b67cee061c37eaf49be36b25 (patch)
tree0c3f8d4857b4fc93f52e63f3d4e9154a3e129d07
parentf349e4ef36d0653c779872d9eb8dca94e6c15d90 (diff)
downloadikiwiki-85f4b99710fa94b9b67cee061c37eaf49be36b25.tar
ikiwiki-85f4b99710fa94b9b67cee061c37eaf49be36b25.tar.gz
untrusted committers code seems to be fully working
Still need to investigate possible races, and test some more.
-rw-r--r--IkiWiki.pm4
-rw-r--r--IkiWiki/Plugin/git.pm10
-rw-r--r--debian/changelog2
-rwxr-xr-xikiwiki.in3
4 files changed, 12 insertions, 7 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 698244187..1a55945a8 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -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 ($) { #{{{
diff --git a/IkiWiki/Plugin/git.pm b/IkiWiki/Plugin/git.pm
index bdac6f7a1..e565f6369 100644
--- a/IkiWiki/Plugin/git.pm
+++ b/IkiWiki/Plugin/git.pm
@@ -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
diff --git a/debian/changelog b/debian/changelog
index 49bd85447..d8e26e4c9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -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
diff --git a/ikiwiki.in b/ikiwiki.in
index 60663bc89..d601d2739 100755
--- a/ikiwiki.in
+++ b/ikiwiki.in
@@ -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();