[PATCH] sha1_file: do not add own object directory as alternate
- From
Ephrim Khong <dr.khong@gmail.com>
- Date
- Jul 14, 2014, 09:02 UTC
- 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 <dr.khong@gmail.com> --- 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