summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Couder <chriscool@tuxfamily.org>2013-12-11 08:46:12 +0100
committerJunio C Hamano <gitster@pobox.com>2013-12-12 11:53:49 -0800
commit769a4fa463bb36ba78eb318f25e0e211f4fae949 (patch)
tree6199547f8cab26c70d82481e978c81cd6df22592
parentbbbb4afc26cd3d711e07a345d1e5f9eedc68100f (diff)
downloadgit-769a4fa463bb36ba78eb318f25e0e211f4fae949.tar.gz
builtin/replace: unset read_replace_refs
When checking to see if some objects are of the same type and when displaying the type of objects, git replace uses the sha1_object_info() function. Unfortunately this function by default respects replace refs, so instead of the type of a replaced object, it gives the type of the replacement object which might be different. To fix this bug, and because git replace should work at a level before replacement takes place, let's unset the read_replace_refs global variable at the beginning of cmd_replace(). Suggested-by: Jeff King <peff@peff.net> Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/replace.c2
-rwxr-xr-xt/t6050-replace.sh2
2 files changed, 3 insertions, 1 deletions
diff --git a/builtin/replace.c b/builtin/replace.c
index 9f3619a1bf..1672870e81 100644
--- a/builtin/replace.c
+++ b/builtin/replace.c
@@ -174,6 +174,8 @@ int cmd_replace(int argc, const char **argv, const char *prefix)
OPT_END()
};
+ read_replace_refs = 0;
+
argc = parse_options(argc, argv, prefix, options, git_replace_usage, 0);
if (list && delete)
diff --git a/t/t6050-replace.sh b/t/t6050-replace.sh
index e1cc3b89da..d0c62f7539 100755
--- a/t/t6050-replace.sh
+++ b/t/t6050-replace.sh
@@ -306,7 +306,7 @@ test_expect_success 'test --format medium' '
test_cmp expected actual
'
-test_expect_failure 'test --format full' '
+test_expect_success 'test --format full' '
{
echo "$H1 (commit) -> $BLOB (blob)" &&
echo "$BLOB (blob) -> $REPLACED (blob)" &&