untrusted committers code seems to be fully working

Still need to investigate possible races, and test some more.
master
Joey Hess 2008-10-23 18:05:57 -04:00
parent f349e4ef36
commit 85f4b99710
4 changed files with 12 additions and 7 deletions

View 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 ($) { #{{{

View 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

2
debian/changelog vendored
View 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

View File

@ -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();