Subject: Re: [PATCH v2] Run global hooks from the directory at hooks.dir

From: Johannes Sixt <[email-masked]>
Date: Mon, 08 Nov 2010 14:29:27 +0100

Am 11/8/2010 13:32, schrieb Brian Collins:
> Run global hooks in the directory specified by the config variable
> hooks.dir before every attempt at running a local hook. If the
> global hook fails, the local hook will not run. If the global hook is
> absent, the local hook runs normally. This is useful because it means
> you can have scripts that run as hooks for multiple repositories, for
> example coding style enforcement for an entire organization, or
> system-wide commit analytics.
> 
> Signed-off-by: Brian Collins <[email-masked]>
> ---
> 
> The possibility of adding this feature was previously discussed here:
> http://marc.info/?l=git&m=127808782807807&w=2

I'm not in favor of this change, as a number of alternatives were
suggested in the thread you cite (Gmane:
http://thread.gmane.org/gmane.comp.version-control.git/150141).

A few hints, just in case you deploy this code:

> +	if ((global_path == NULL || access(global_path, X_OK) > 0) &&
> +			access(local_path, X_OK) > 0)
> +		return 0;

access(2) returns zero on success, negative on failure.

> +	if (global_path != NULL)
> +		ret = run_hook_file(global_path, index_file, argv) ||
> +			run_hook_file(local_path, index_file, argv);

What is the value of ret if the hook in global_path fails? Is it the exit
code, or is it 1? What should it be?

-- Hannes