Re: [PATCH] fetch: refuse to fetch into the current branch in a non-bare repository
- From
Shawn O. Pearce <spearce@spearce.org>
- Date
- Oct 12, 2008, 18:52 UTC
- Message-ID
- <20081012185209.GB5255@spearce.org>
- In-Reply-To
- <alpine.DEB.1.00.0810111336350.22125@pacific.mpi-cbg.de.mpi-cbg.de>
Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
Show 18 quoted lines
> diff --git a/builtin-fetch.c b/builtin-fetch.c
> index ee93d3a..d701550 100644
> --- a/builtin-fetch.c
> +++ b/builtin-fetch.c
> @@ -534,6 +534,25 @@ static void find_non_local_tags(struct transport *transport,
> string_list_clear(&new_refs, 0);
> }
>
> +static void check_ref_map(struct ref *ref_map)
> +{
> + int flag;
> + unsigned char sha1[20];
> + const char *HEAD;
> +
> + if (is_bare_repository())
> + return;
> +
> + HEAD = resolve_ref("HEAD", sha1, 1, &flag);I'd rather see local variables named lowercase. Constants should be the only thing that is all uppercase.
Show 5 quoted lines
> @@ -558,6 +577,7 @@ static int do_fetch(struct transport *transport, > } > > ref_map = get_ref_map(transport, refs, ref_count, tags, &autotags); > + check_ref_map(ref_map);
This should only be called if update_head_ok is false. So maybe:
if (!update_head_ok) check_ref_map(ref_map)
Show 14 quoted lines
> diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh > index 9aae496..cd8b550 100755 > --- a/t/t5510-fetch.sh > +++ b/t/t5510-fetch.sh > @@ -323,4 +323,10 @@ test_expect_success 'auto tag following fetches minimum' ' > ) > ' > > +test_expect_success 'refuse to fetch into the current branch' ' > + > + test_must_fail git fetch . side:master > + > +' > +
Repeat this test, but with --update-head-ok and expect success, since the check_ref_map logic is conditional on that?
-- Shawn.