Subject: Re: [PATCH v3 4/4] contrib: add convert-grafts-to-replace-refs.sh

From: Junio C Hamano <[email-masked]>
Date: Thu, 05 Jun 2014 14:55:26 -0700

Christian Couder <[email-masked]> writes:

> diff --git a/contrib/convert-grafts-to-replace-refs.sh b/contrib/convert-grafts-to-replace-refs.sh
> new file mode 100755
> index 0000000..8472879
> --- /dev/null
> +++ b/contrib/convert-grafts-to-replace-refs.sh
> @@ -0,0 +1,29 @@
> +#!/bin/sh
> +
> +# You should execute this script in the repository where you
> +# want to convert grafts to replace refs.
> +
> +die () {
> +	echo >&2 "$@"
> +	exit 1
> +}

Don't we install git-sh-setup in GIT_EXEC_PATH, in order to allow
these third-party scripts to begin with:

        . $(git --exec-path)/git-sh-setup

just like our own scripted Porcelains?

> +GRAFTS_FILE="${GIT_DIR:-.git}/info/grafts"
> +
> +test -f "$GRAFTS_FILE" || die "Could not find graft file: '$GRAFTS_FILE'"
> +
> +grep '^[^# ]' "$GRAFTS_FILE" | while read definition
> +do

Format the above like so:

    grep '^[^# ]' "$GRAFTS_FILE" |
    while read definition
    do

which is easier to see what that "do" is doing.

> +	test -n "$definition" && {
> +		echo "Converting: $definition"
> +		git replace --graft $definition ||
> +			die "Conversion failed for: $definition"
> +	}

Hmph, why not if/then/fi?