# Re: [PATCH] contrib: add convert-grafts-to-replace-refs.sh

2 messages from 2014-05-27 to 2014-05-27. Participants: Eric Sunshine, Junio C Hamano.
Thread: https://gitlist.dev/t/36767

## Eric Sunshine, 2014-05-27 21:19

Subject: Re: [PATCH] contrib: add convert-grafts-to-replace-refs.sh
Message-ID: <CAPig+cR4G916TwqGDRMr9fAH=SZkUB8kqGy3Hy5YBHZLgUw8ig@mail.gmail.com>
URL: https://gitlist.dev/e/CAPig%2BcR4G916TwqGDRMr9fAH%3DSZkUB8kqGy3Hy5YBHZLgUw8ig%40mail.gmail.com
In-Reply-To: <20140527182719.14437.62235.chriscool@tuxfamily.org>

```
On Tuesday, May 27, 2014, Christian Couder <chriscool@tuxfamily.org> wrote:
>
> This script adds into contrib/ an example script to convert
> grafts from an existing grafts file into replace refs using
> the new --graft option of "git replace".
>
> While at it let's mention this new script in the
> "git replace" documentation for the --graft option.
>
> Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
> ---
>  Documentation/git-replace.txt             |  4 +++-
>  contrib/convert-grafts-to-replace-refs.sh | 24 ++++++++++++++++++++++++
>  2 files changed, 27 insertions(+), 1 deletion(-)
>  create mode 100755 contrib/convert-grafts-to-replace-refs.sh
>
> diff --git a/Documentation/git-replace.txt b/Documentation/git-replace.txt
> index 491875e..e1be2e6 100644
> --- a/Documentation/git-replace.txt
> +++ b/Documentation/git-replace.txt
> @@ -79,7 +79,9 @@ OPTIONS
>         content as <commit> except that its parents will be
>         [<parent>...] instead of <commit>'s parents. A replacement ref
>         is then created to replace <commit> with the newly created
> -       commit.
> +       commit. See contrib/convert-grafts-to-replace-refs.sh for an
> +       example script based on this option that can convert grafts to
> +       replace refs.
>
>  -l <pattern>::
>  --list <pattern>::
> diff --git a/contrib/convert-grafts-to-replace-refs.sh b/contrib/convert-grafts-to-replace-refs.sh
> new file mode 100755
> index 0000000..2404cc6
> --- /dev/null
> +++ b/contrib/convert-grafts-to-replace-refs.sh
> @@ -0,0 +1,24 @@
> +#!/bin/sh
> +
> +# You should execute this script in the repository where you
> +# want to convert grafts to replace refs.
> +
> +die () {
> +       echo >&2 "$@"
> +       exit 1
> +}
> +
> +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
> +       test -n "$definition" && {
> +               echo "Converting: $definition"
> +               git replace --graft $definition || die "Convertion failed for: $definition"

s/Convertion/Conversion/

> +       }
> +done
> +
> +echo "Success! All the grafts in '$GRAFTS_FILE' have been converted to replace refs!"
> +echo "You should now move away or delete the grafts file: '$GRAFTS_FILE'"

Rather than merely giving advice, would it make sees for the script
rename the file (adding .bak or some such) and report that it did so?

```

## Junio C Hamano, 2014-05-27 22:00

Subject: Re: [PATCH] contrib: add convert-grafts-to-replace-refs.sh
Message-ID: <xmqqwqd6evbp.fsf@gitster.dls.corp.google.com>
URL: https://gitlist.dev/e/xmqqwqd6evbp.fsf%40gitster.dls.corp.google.com
In-Reply-To: <CAPig+cR4G916TwqGDRMr9fAH=SZkUB8kqGy3Hy5YBHZLgUw8ig@mail.gmail.com>

```
Eric Sunshine <sunshine@sunshineco.com> writes:

>> +echo "Success! All the grafts in '$GRAFTS_FILE' have been converted to replace refs!"
>> +echo "You should now move away or delete the grafts file: '$GRAFTS_FILE'"
>
> Rather than merely giving advice, would it make sees for the script
> rename the file (adding .bak or some such) and report that it did so?

Yeah, I would say so.

```
