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>maint
parent
bbbb4afc26
commit
769a4fa463
|
|
@ -174,6 +174,8 @@ int cmd_replace(int argc, const char **argv, const char *prefix)
|
||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
read_replace_refs = 0;
|
||||||
|
|
||||||
argc = parse_options(argc, argv, prefix, options, git_replace_usage, 0);
|
argc = parse_options(argc, argv, prefix, options, git_replace_usage, 0);
|
||||||
|
|
||||||
if (list && delete)
|
if (list && delete)
|
||||||
|
|
|
||||||
|
|
@ -306,7 +306,7 @@ test_expect_success 'test --format medium' '
|
||||||
test_cmp expected actual
|
test_cmp expected actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_failure 'test --format full' '
|
test_expect_success 'test --format full' '
|
||||||
{
|
{
|
||||||
echo "$H1 (commit) -> $BLOB (blob)" &&
|
echo "$H1 (commit) -> $BLOB (blob)" &&
|
||||||
echo "$BLOB (blob) -> $REPLACED (blob)" &&
|
echo "$BLOB (blob) -> $REPLACED (blob)" &&
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue