diff options
author | Christian Couder <chriscool@tuxfamily.org> | 2014-05-17 14:16:34 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-05-19 13:39:53 -0700 |
commit | f22166b5fee7dc3deaf44dda31d1b5d7ac1fdfd8 (patch) | |
tree | 713b6c5f4517245c4547adb7646b900e0f0f89a3 /builtin/replace.c | |
parent | b892bb45eacb484be281a992bef66ea723210717 (diff) | |
download | git-f22166b5fee7dc3deaf44dda31d1b5d7ac1fdfd8.tar.gz |
replace: make sure --edit results in a different object
It's a bad idea to create a replace ref for an object
that points to the original object itself.
That's why we have to check if the result from editing
the original object is a different object and error out
if it isn't.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/replace.c')
-rw-r--r-- | builtin/replace.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/builtin/replace.c b/builtin/replace.c index 3da1bae0a6..0751804039 100644 --- a/builtin/replace.c +++ b/builtin/replace.c @@ -275,6 +275,9 @@ static int edit_and_replace(const char *object_ref, int force) free(tmpfile); + if (!hashcmp(old, new)) + return error("new object is the same as the old one: '%s'", sha1_to_hex(old)); + return replace_object_sha1(object_ref, old, "replacement", new, force); } |