Skip to content

Commit

Permalink
Merge branch 'np/pack'
Browse files Browse the repository at this point in the history
* np/pack:
  pack-objects: get rid of an ugly cast
  make the pack index version configurable

Conflicts:

	builtin-pack-objects.c
  • Loading branch information
Junio C Hamano committed Nov 4, 2007
2 parents 2dfffd3 + 79814f4 commit e091653
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 7 deletions.
9 changes: 9 additions & 0 deletions Documentation/config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
19 changes: 12 additions & 7 deletions builtin-pack-objects.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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)
Expand All @@ -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];
Expand Down Expand Up @@ -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))
Expand All @@ -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);
Expand Down Expand Up @@ -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);
}

Expand Down
13 changes: 13 additions & 0 deletions index-pack.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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];

Expand Down

0 comments on commit e091653

Please sign in to comment.