Skip to content

Commit

Permalink
git-cvsserver: run post-update hook *after* update.
Browse files Browse the repository at this point in the history
CVS server was running the hook before the update action was
actually done. This performs the update before the hook is called.

The original commit that introduced the current incorrect behavior
was 394d66d "git-cvsserver runs hooks/post-update". The error in
ordering of the hook call appears to have gone unnoticed, but since
git-cvsserver is supposed to emulate receive-pack, it stands to
reason that the hook should be run *after* the update. Since this
behavior is inconsistent with recieve-pack, users are either:

  1) not using post-update hooks with git-cvsserver;
  2) using post-update hooks that don't care whether they are
     called before or after the actual update occurs;
  3) using post-update hooks *only* with git-cvsserver, and
     relying on the hook being called just before the update.

This patch would affect only users in case 3. These users are
depending on fairly obviously wrong behavior, and moreover they can
simply change their current post-update into post-recieve hooks,
and their systems will work correctly again.

Signed-off-by: Stefan Karpinski <stefan.karpinski@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Stefan Karpinski authored and Junio C Hamano committed Jan 31, 2009
1 parent 418566b commit ad8c347
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions git-cvsserver.perl
Original file line number Diff line number Diff line change
Expand Up @@ -1414,14 +1414,14 @@ sub req_ci
close $pipe || die "bad pipe: $! $?";
}

$updater->update();

### Then hooks/post-update
$hook = $ENV{GIT_DIR}.'hooks/post-update';
if (-x $hook) {
system($hook, "refs/heads/$state->{module}");
}

$updater->update();

# foreach file specified on the command line ...
foreach my $filename ( @committedfiles )
{
Expand Down

0 comments on commit ad8c347

Please sign in to comment.