From: Ephrim Khong Date: Mon, 14 Jul 2014 09:02:40 GMT Subject: [PATCH] sha1_file: do not add own object directory as alternate Message-ID: <53C39CB0.6040909@gmail.com> In-Reply-To: <53C26309.5040401@gmail.com> When adding alternate object directories, we try not to add the directory of the current repository to avoid cycles. Unfortunately, that test was broken, since it compared an absolute with a relative path. Signed-off-by: Ephrim Khong --- My first patch, so be harsh. I'm not sure about the filename of the test, the behavior is tested with repack, but it affects gc and others as well. sha1_file.c | 2 +- t/t7702-repack-cyclic-alternate.sh | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100755 t/t7702-repack-cyclic-alternate.sh diff --git a/sha1_file.c b/sha1_file.c index 34d527f..7e98e9e 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -320,7 +320,7 @@ static int link_alt_odb_entry(const char *entry, const char *relative_base, int return -1; } } - if (!strcmp(ent->base, objdir)) { + if (!strcmp(ent->base, absolute_path(objdir))) { free(ent); return -1; } diff --git a/t/t7702-repack-cyclic-alternate.sh b/t/t7702-repack-cyclic-alternate.sh new file mode 100755 index 0000000..9a22d98 --- /dev/null +++ b/t/t7702-repack-cyclic-alternate.sh @@ -0,0 +1,24 @@ +#!/bin/sh +# +# Copyright (c) 2014 Ephrim Khong +# + +test_description='repack involving cyclic alternate' +. ./test-lib.sh + +test_expect_success setup ' + git init repo && + cd repo && + touch a && + git add a && + git commit -m 1 && + git repack -adl && + echo $PWD/.git/objects > .git/objects/info/alternates +' + +test_expect_success 're-packing repository with itsself as alternate' ' + git repack -adl && + git fsck +' + +test_done -- 1.8.4.3