'\n', NULL, 0);
}
-struct odb_source *set_temporary_primary_odb(const char *dir, int will_destroy)
+struct odb_source *odb_set_temporary_primary_source(struct object_database *odb,
+ const char *dir, int will_destroy)
{
struct odb_source *source;
* Make sure alternates are initialized, or else our entry may be
* overwritten when they are.
*/
- odb_prepare_alternates(the_repository->objects);
+ odb_prepare_alternates(odb);
/*
* Make a new primary odb and link the old primary ODB in as an
* alternate
*/
source = xcalloc(1, sizeof(*source));
- source->odb = the_repository->objects;
+ source->odb = odb;
source->path = xstrdup(dir);
/*
*/
source->disable_ref_updates = 1;
source->will_destroy = will_destroy;
- source->next = the_repository->objects->sources;
- the_repository->objects->sources = source;
+ source->next = odb->sources;
+ odb->sources = source;
return source->next;
}
free(source);
}
-void restore_primary_odb(struct odb_source *restore_alt, const char *old_path)
+void odb_restore_primary_source(struct object_database *odb,
+ struct odb_source *restore_source,
+ const char *old_path)
{
- struct odb_source *cur_alt = the_repository->objects->sources;
+ struct odb_source *cur_source = odb->sources;
- if (strcmp(old_path, cur_alt->path))
+ if (strcmp(old_path, cur_source->path))
BUG("expected %s as primary object store; found %s",
- old_path, cur_alt->path);
+ old_path, cur_source->path);
- if (cur_alt->next != restore_alt)
+ if (cur_source->next != restore_source)
BUG("we expect the old primary object store to be the first alternate");
- the_repository->objects->sources = restore_alt;
- free_object_directory(cur_alt);
+ odb->sources = restore_source;
+ free_object_directory(cur_source);
}
char *compute_alternate_path(const char *path, struct strbuf *err)
char *path;
};
-/*
- * Replace the current writable object directory with the specified temporary
- * object directory; returns the former primary object directory.
- */
-struct odb_source *set_temporary_primary_odb(const char *dir, int will_destroy);
-
-/*
- * Restore a previous ODB replaced by set_temporary_main_odb.
- */
-void restore_primary_odb(struct odb_source *restore_alternate, const char *old_path);
-
struct packed_git;
struct multi_pack_index;
struct cached_object_entry;
*/
struct odb_source *odb_find_source(struct object_database *odb, const char *obj_dir);
+/*
+ * Replace the current writable object directory with the specified temporary
+ * object directory; returns the former primary source.
+ */
+struct odb_source *odb_set_temporary_primary_source(struct object_database *odb,
+ const char *dir, int will_destroy);
+
+/*
+ * Restore the primary source that was previously replaced by
+ * `odb_set_temporary_primary_source()`.
+ */
+void odb_restore_primary_source(struct object_database *odb,
+ struct odb_source *restore_source,
+ const char *old_path);
+
/*
* Iterate through all alternates of the database and execute the provided
* callback function for each of them. Stop iterating once the callback
the_tmp_objdir = NULL;
if (t->prev_source)
- restore_primary_odb(t->prev_source, t->path.buf);
+ odb_restore_primary_source(t->repo->objects, t->prev_source, t->path.buf);
err = remove_dir_recursively(&t->path, 0);
if (t->prev_source) {
if (t->repo->objects->sources->will_destroy)
BUG("migrating an ODB that was marked for destruction");
- restore_primary_odb(t->prev_source, t->path.buf);
+ odb_restore_primary_source(t->repo->objects, t->prev_source, t->path.buf);
t->prev_source = NULL;
}
{
if (t->prev_source)
BUG("the primary object database is already replaced");
- t->prev_source = set_temporary_primary_odb(t->path.buf, will_destroy);
+ t->prev_source = odb_set_temporary_primary_source(t->repo->objects,
+ t->path.buf, will_destroy);
t->will_destroy = will_destroy;
}
if (!the_tmp_objdir || !the_tmp_objdir->prev_source)
return NULL;
- restore_primary_odb(the_tmp_objdir->prev_source, the_tmp_objdir->path.buf);
+ odb_restore_primary_source(the_tmp_objdir->repo->objects,
+ the_tmp_objdir->prev_source, the_tmp_objdir->path.buf);
the_tmp_objdir->prev_source = NULL;
return the_tmp_objdir;
}