From: Thomas Rast <trast@inf•ethz.ch>
To: Christian Couder <chriscool@tuxfamily•org>
Cc: Junio C Hamano <gitster@pobox•com>, <git@vger•kernel.org>,
Philip Oakley <philipoakley@iee•org>
Subject: Re: [PATCH] replace: forbid replacing an object with one of a different type
Date: Wed, 7 Aug 2013 10:46:37 +0200 [thread overview]
Message-ID: <87iozhyjki.fsf@linux-k42r.v.cablecom.net> (raw)
In-Reply-To: <20130807044248.17464.35806.chriscool@tuxfamily.org> (Christian Couder's message of "Wed, 7 Aug 2013 06:42:47 +0200")
Christian Couder <chriscool@tuxfamily•org> writes:
> Users replacing an object with one of a different type were not
> prevented to do so, even if it was obvious, and stated in the doc,
> that bad things would result from doing that.
>
> To avoid mistakes, it is better to just forbid that though.
>
> The doc will be updated in a later patch.
>
> Signed-off-by: Christian Couder <chriscool@tuxfamily•org>
Feel free to steal some of my other email for the commit message, to
write down for posterity that reverting would not really be a useful
step.
The patch looks good to me.
> If this patch is considered useful, I will update the doc and
> maybe add tests.
>
> builtin/replace.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/builtin/replace.c b/builtin/replace.c
> index 59d3115..0246ab3 100644
> --- a/builtin/replace.c
> +++ b/builtin/replace.c
> @@ -85,6 +85,7 @@ static int replace_object(const char *object_ref, const char *replace_ref,
> int force)
> {
> unsigned char object[20], prev[20], repl[20];
> + enum object_type obj_type, repl_type;
> char ref[PATH_MAX];
> struct ref_lock *lock;
>
> @@ -100,6 +101,14 @@ static int replace_object(const char *object_ref, const char *replace_ref,
> if (check_refname_format(ref, 0))
> die("'%s' is not a valid ref name.", ref);
>
> + obj_type = sha1_object_info(object, NULL);
> + repl_type = sha1_object_info(repl, NULL);
> + if (obj_type != repl_type)
> + die("Object ref '%s' is of type '%s'\n"
> + "while replace ref '%s' is of type '%s'.",
> + object_ref, typename(obj_type),
> + replace_ref, typename(repl_type));
> +
> if (read_ref(ref, prev))
> hashclr(prev);
> else if (!force)
--
Thomas Rast
trast@{inf,student}.ethz.ch
next prev parent reply other threads:[~2013-08-07 8:46 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-07 4:42 [PATCH] replace: forbid replacing an object with one of a different type Christian Couder
2013-08-07 8:46 ` Thomas Rast [this message]
2013-08-08 21:09 ` Philip Oakley
2013-08-08 21:38 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87iozhyjki.fsf@linux-k42r.v.cablecom.net \
--to=trast@inf$(echo .)ethz.ch \
--cc=chriscool@tuxfamily$(echo .)org \
--cc=git@vger$(echo .)kernel.org \
--cc=gitster@pobox$(echo .)com \
--cc=philipoakley@iee$(echo .)org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox