Subject: Re: [PATCH] add a pre-merge hook

From: Paolo Bonzini <[email-masked]>
Date: Wed, 27 Aug 2008 22:05:45 +0200

> I think we should have done something like this for post_merge, not just
> "1/0 to show if it is a squash" which was an ill-thought-out hack.  Is
> there a clean way to fix the interface without breaking existing
> post_merge hooks in people's repositories?

Well, you can add this argument as a second argument to post-merge.
Shall I do it?

> Please call whatever you install from template/hooks--* a "sample", not
> "default".

Ok.

> If it is primarily a hack to support calling post-merge with an non-object
> name "0" or "1"

It is to support not appending the commit list to the arguments of
post-merge.

>> +static int run_pre_merge_hook(const char *kind)
>> +{
>> +	return run_hook("pre-merge", remoteheads,
>> +			squash ? "squash" : kind, "--", NULL);
>>  }
> 
> remoteheads is a commit_list, you have the name of the hook and kind, so
> this extra "--" is only for run_hook() hackery to distinguish between the
> callers to post-merge and the callers to new pre-merge?

No, absolutely.  The "--" separator is for future extension, in case we
want to add other arguments before the head list.

run_hook does not care about what it receives in its varargs part.  It
is copied verbatim until the NULL.  Then it adds a "--" and the heads
argument if requested (which is not the case for post-merge).  The fact
that I had to specify a "--" here though is fishy.  Maybe I have a
off-by-one somewhere that, if fixed, can simplify the code somehow.

I'll take a look tomorrow, thanks for the review.

Paolo