Merge branch 'np/pack'
* np/pack: pack-objects: get rid of an ugly cast make the pack index version configurable Conflicts: builtin-pack-objects.c
This commit is contained in:
commit
e091653951
@ -661,6 +661,15 @@ pack.threads::
|
||||
machines. The required amount of memory for the delta search window
|
||||
is however multiplied by the number of threads.
|
||||
|
||||
pack.indexVersion::
|
||||
Specify the default pack index version. Valid values are 1 for
|
||||
legacy pack index used by Git versions prior to 1.5.2, and 2 for
|
||||
the new pack index with capabilities for packs larger than 4 GB
|
||||
as well as proper protection against the repacking of corrupted
|
||||
packs. Version 2 is selected and this config option ignored
|
||||
whenever the corresponding pack is larger than 2 GB. Otherwise
|
||||
the default is 1.
|
||||
|
||||
pull.octopus::
|
||||
The default merge strategy to use when pulling multiple branches
|
||||
at once.
|
||||
|
@ -57,7 +57,7 @@ struct object_entry {
|
||||
* nice "minimum seek" order.
|
||||
*/
|
||||
static struct object_entry *objects;
|
||||
static struct object_entry **written_list;
|
||||
static struct pack_idx_entry **written_list;
|
||||
static uint32_t nr_objects, nr_alloc, nr_result, nr_written;
|
||||
|
||||
static int non_empty;
|
||||
@ -577,7 +577,7 @@ static off_t write_one(struct sha1file *f,
|
||||
e->idx.offset = 0;
|
||||
return 0;
|
||||
}
|
||||
written_list[nr_written++] = e;
|
||||
written_list[nr_written++] = &e->idx;
|
||||
|
||||
/* make sure off_t is sufficiently large not to wrap */
|
||||
if (offset > offset + size)
|
||||
@ -599,7 +599,7 @@ static void write_pack_file(void)
|
||||
|
||||
if (do_progress)
|
||||
progress_state = start_progress("Writing objects", nr_result);
|
||||
written_list = xmalloc(nr_objects * sizeof(struct object_entry *));
|
||||
written_list = xmalloc(nr_objects * sizeof(*written_list));
|
||||
|
||||
do {
|
||||
unsigned char sha1[20];
|
||||
@ -651,9 +651,8 @@ static void write_pack_file(void)
|
||||
umask(mode);
|
||||
mode = 0444 & ~mode;
|
||||
|
||||
idx_tmp_name = write_idx_file(NULL,
|
||||
(struct pack_idx_entry **) written_list,
|
||||
nr_written, sha1);
|
||||
idx_tmp_name = write_idx_file(NULL, written_list,
|
||||
nr_written, sha1);
|
||||
snprintf(tmpname, sizeof(tmpname), "%s-%s.pack",
|
||||
base_name, sha1_to_hex(sha1));
|
||||
if (adjust_perm(pack_tmp_name, mode))
|
||||
@ -677,7 +676,7 @@ static void write_pack_file(void)
|
||||
|
||||
/* mark written objects as written to previous pack */
|
||||
for (j = 0; j < nr_written; j++) {
|
||||
written_list[j]->idx.offset = (off_t)-1;
|
||||
written_list[j]->offset = (off_t)-1;
|
||||
}
|
||||
nr_remaining -= nr_written;
|
||||
} while (nr_remaining && i < nr_objects);
|
||||
@ -1768,6 +1767,12 @@ static int git_pack_config(const char *k, const char *v)
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
if (!strcmp(k, "pack.indexversion")) {
|
||||
pack_idx_default_version = git_config_int(k, v);
|
||||
if (pack_idx_default_version > 2)
|
||||
die("bad pack.indexversion=%d", pack_idx_default_version);
|
||||
return 0;
|
||||
}
|
||||
return git_default_config(k, v);
|
||||
}
|
||||
|
||||
|
13
index-pack.c
13
index-pack.c
@ -683,6 +683,17 @@ static void final(const char *final_pack_name, const char *curr_pack_name,
|
||||
}
|
||||
}
|
||||
|
||||
static int git_index_pack_config(const char *k, const char *v)
|
||||
{
|
||||
if (!strcmp(k, "pack.indexversion")) {
|
||||
pack_idx_default_version = git_config_int(k, v);
|
||||
if (pack_idx_default_version > 2)
|
||||
die("bad pack.indexversion=%d", pack_idx_default_version);
|
||||
return 0;
|
||||
}
|
||||
return git_default_config(k, v);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int i, fix_thin_pack = 0;
|
||||
@ -693,6 +704,8 @@ int main(int argc, char **argv)
|
||||
struct pack_idx_entry **idx_objects;
|
||||
unsigned char sha1[20];
|
||||
|
||||
git_config(git_index_pack_config);
|
||||
|
||||
for (i = 1; i < argc; i++) {
|
||||
char *arg = argv[i];
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user