Commit a672ea6a authored by Nicolas Pitre's avatar Nicolas Pitre Committed by Junio C Hamano

rehabilitate 'git index-pack' inside the object store

Before commit d0b92a3f it was possible to run 'git index-pack'
directly in the .git/objects/pack/ directory.  Restore that ability.
Signed-off-by: default avatarNicolas Pitre <[email protected]>
Signed-off-by: default avatarJunio C Hamano <[email protected]>
parent 5610e3b0
......@@ -879,10 +879,26 @@ int main(int argc, char **argv)
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];
......
......@@ -177,4 +177,14 @@ test_expect_success \
".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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment