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::
machines. The required amount of memory for the delta search window machines. The required amount of memory for the delta search window
is however multiplied by the number of threads. 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:: pull.octopus::
The default merge strategy to use when pulling multiple branches The default merge strategy to use when pulling multiple branches
at once. at once.

19
builtin-pack-objects.c

@ -57,7 +57,7 @@ struct object_entry {
* nice "minimum seek" order. * nice "minimum seek" order.
*/ */
static struct object_entry *objects; 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 uint32_t nr_objects, nr_alloc, nr_result, nr_written;


static int non_empty; static int non_empty;
@ -577,7 +577,7 @@ static off_t write_one(struct sha1file *f,
e->idx.offset = 0; e->idx.offset = 0;
return 0; return 0;
} }
written_list[nr_written++] = e; written_list[nr_written++] = &e->idx;


/* make sure off_t is sufficiently large not to wrap */ /* make sure off_t is sufficiently large not to wrap */
if (offset > offset + size) if (offset > offset + size)
@ -599,7 +599,7 @@ static void write_pack_file(void)


if (do_progress) if (do_progress)
progress_state = start_progress("Writing objects", nr_result); 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 { do {
unsigned char sha1[20]; unsigned char sha1[20];
@ -651,9 +651,8 @@ static void write_pack_file(void)
umask(mode); umask(mode);
mode = 0444 & ~mode; mode = 0444 & ~mode;


idx_tmp_name = write_idx_file(NULL, idx_tmp_name = write_idx_file(NULL, written_list,
(struct pack_idx_entry **) written_list, nr_written, sha1);
nr_written, sha1);
snprintf(tmpname, sizeof(tmpname), "%s-%s.pack", snprintf(tmpname, sizeof(tmpname), "%s-%s.pack",
base_name, sha1_to_hex(sha1)); base_name, sha1_to_hex(sha1));
if (adjust_perm(pack_tmp_name, mode)) 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 */ /* mark written objects as written to previous pack */
for (j = 0; j < nr_written; j++) { 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; nr_remaining -= nr_written;
} while (nr_remaining && i < nr_objects); } while (nr_remaining && i < nr_objects);
@ -1768,6 +1767,12 @@ static int git_pack_config(const char *k, const char *v)
#endif #endif
return 0; 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); 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,
} }
} }


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 main(int argc, char **argv)
{ {
int i, fix_thin_pack = 0; int i, fix_thin_pack = 0;
@ -693,6 +704,8 @@ int main(int argc, char **argv)
struct pack_idx_entry **idx_objects; struct pack_idx_entry **idx_objects;
unsigned char sha1[20]; unsigned char sha1[20];


git_config(git_index_pack_config);

for (i = 1; i < argc; i++) { for (i = 1; i < argc; i++) {
char *arg = argv[i]; char *arg = argv[i];



Loading…
Cancel
Save