Browse Source

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
maint
Junio C Hamano 17 years ago
parent
commit
e091653951
  1. 9
      Documentation/config.txt
  2. 19
      builtin-pack-objects.c
  3. 13
      index-pack.c

9
Documentation/config.txt

@ -661,6 +661,15 @@ pack.threads:: @@ -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.

19
builtin-pack-objects.c

@ -57,7 +57,7 @@ struct object_entry { @@ -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, @@ -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) @@ -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) @@ -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) @@ -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) @@ -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

@ -683,6 +683,17 @@ static void final(const char *final_pack_name, const char *curr_pack_name, @@ -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) @@ -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…
Cancel
Save