summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 5610e3b)
raw | patch | inline | side by side (parent: 5610e3b)
author | Nicolas Pitre <nico@cam.org> | |
Tue, 21 Oct 2008 01:17:07 +0000 (21:17 -0400) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Tue, 21 Oct 2008 20:20:03 +0000 (13:20 -0700) |
Before commit d0b92a3f6e it was possible to run 'git index-pack'
directly in the .git/objects/pack/ directory. Restore that ability.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
directly in the .git/objects/pack/ directory. Restore that ability.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
index-pack.c | patch | blob | history | |
t/t5302-pack-index.sh | patch | blob | history |
diff --git a/index-pack.c b/index-pack.c
index 2a366206a4e830d0bb66d6ac708cd512a94d6d37..c99a1a152c7ddbb63073461b86179f2be5bf9640 100644 (file)
--- a/index-pack.c
+++ b/index-pack.c
char *index_name_buf = NULL, *keep_name_buf = NULL;
struct pack_idx_entry **idx_objects;
unsigned char pack_sha1[20];
- int nongit = 0;
- setup_git_directory_gently(&nongit);
- git_config(git_index_pack_config, NULL);
+ /*
+ * We wish to read the repository's config file if any, and
+ * for that it is necessary to call setup_git_directory_gently().
+ * However if the cwd was inside .git/objects/pack/ then we need
+ * to go back there or all the pack name arguments will be wrong.
+ * And in that case we cannot rely on any prefix returned by
+ * setup_git_directory_gently() either.
+ */
+ {
+ char cwd[PATH_MAX+1];
+ int nongit;
+
+ if (!getcwd(cwd, sizeof(cwd)-1))
+ die("Unable to get current working directory");
+ setup_git_directory_gently(&nongit);
+ git_config(git_index_pack_config, NULL);
+ if (chdir(cwd))
+ die("Cannot come back to cwd");
+ }
for (i = 1; i < argc; i++) {
char *arg = argv[i];
diff --git a/t/t5302-pack-index.sh b/t/t5302-pack-index.sh
index 6424db1f28e11c3ac6eb629ba4db7380812eab72..344ab25b8b6ddcd8b687a72e43b9e26aec18263e 100755 (executable)
--- a/t/t5302-pack-index.sh
+++ b/t/t5302-pack-index.sh
".git/objects/pack/pack-${pack1}.pack" 2>&1) &&
echo "$err" | grep "CRC mismatch"'
+test_expect_success 'running index-pack in the object store' '
+ rm -f .git/objects/pack/* &&
+ cp test-1-${pack1}.pack .git/objects/pack/pack-${pack1}.pack &&
+ (
+ cd .git/objects/pack
+ git index-pack pack-${pack1}.pack
+ ) &&
+ test -f .git/objects/pack/pack-${pack1}.idx
+'
+
test_done