From: Paolo Bonzini Date: Wed, 27 Aug 2008 20:05:45 GMT Subject: Re: [PATCH] add a pre-merge hook Message-ID: <48B5B399.6090407@gnu.org> In-Reply-To: <7v63pmqqtx.fsf@gitster.siamese.dyndns.org> > 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