Merge branch 'sb/object-store'

Refactoring the internal global data structure to make it possible
to open multiple repositories, work with and then close them.

Rerolled by Duy on top of a separate preliminary clean-up topic.
The resulting structure of the topics looked very sensible.

* sb/object-store: (27 commits)
  sha1_file: allow sha1_loose_object_info to handle arbitrary repositories
  sha1_file: allow map_sha1_file to handle arbitrary repositories
  sha1_file: allow map_sha1_file_1 to handle arbitrary repositories
  sha1_file: allow open_sha1_file to handle arbitrary repositories
  sha1_file: allow stat_sha1_file to handle arbitrary repositories
  sha1_file: allow sha1_file_name to handle arbitrary repositories
  sha1_file: add repository argument to sha1_loose_object_info
  sha1_file: add repository argument to map_sha1_file
  sha1_file: add repository argument to map_sha1_file_1
  sha1_file: add repository argument to open_sha1_file
  sha1_file: add repository argument to stat_sha1_file
  sha1_file: add repository argument to sha1_file_name
  sha1_file: allow prepare_alt_odb to handle arbitrary repositories
  sha1_file: allow link_alt_odb_entries to handle arbitrary repositories
  sha1_file: add repository argument to prepare_alt_odb
  sha1_file: add repository argument to link_alt_odb_entries
  sha1_file: add repository argument to read_info_alternates
  sha1_file: add repository argument to link_alt_odb_entry
  sha1_file: add raw_object_store argument to alt_odb_usable
  pack: move approximate object count to object store
  ...
This commit is contained in:
Junio C Hamano
2018-04-11 13:09:55 +09:00
39 changed files with 394 additions and 234 deletions

View File

@ -10,6 +10,8 @@
#include "dir.h"
#include "sha1-array.h"
#include "packfile.h"
#include "object-store.h"
#include "repository.h"
static int get_oid_oneline(const char *, struct object_id *, struct commit_list *);
@ -104,7 +106,7 @@ static void find_short_object_filename(struct disambiguate_state *ds)
*/
fakeent = alloc_alt_odb(get_object_directory());
}
fakeent->next = alt_odb_list;
fakeent->next = the_repository->objects->alt_odb_list;
for (alt = fakeent; alt && !ds->ambiguous; alt = alt->next) {
int pos;
@ -178,7 +180,8 @@ static void find_short_packed_object(struct disambiguate_state *ds)
struct packed_git *p;
prepare_packed_git();
for (p = packed_git; p && !ds->ambiguous; p = p->next)
for (p = get_packed_git(the_repository); p && !ds->ambiguous;
p = p->next)
unique_in_pack(p, ds);
}
@ -334,7 +337,7 @@ static int init_object_disambiguation(const char *name, int len,
ds->len = len;
ds->hex_pfx[len] = '\0';
prepare_alt_odb();
prepare_alt_odb(the_repository);
return 0;
}
@ -532,7 +535,7 @@ static void find_abbrev_len_packed(struct min_abbrev_data *mad)
struct packed_git *p;
prepare_packed_git();
for (p = packed_git; p; p = p->next)
for (p = get_packed_git(the_repository); p; p = p->next)
find_abbrev_len_for_pack(p, mad);
}