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@xxxxxxxxx>
---
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
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html