rehabilitate 'git index-pack' inside the object store
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>
This commit is contained in:
parent
5610e3b031
commit
a672ea6ac5
22
index-pack.c
22
index-pack.c
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user