free(old_gitdir);
repo_set_commondir(repo, o->commondir);
-
- if (!repo->objects)
- repo->objects = odb_new(repo, o->object_dir, o->alternate_db);
- else if (!o->skip_initializing_odb)
- BUG("cannot reinitialize an already-initialized object directory");
-
repo->disable_ref_updates = o->disable_ref_updates;
expand_base_dir(&repo->graft_file, o->graft_file,
goto error;
}
+ repo->objects = odb_new(repo, NULL, NULL);
+
if (worktree)
repo_set_worktree(repo, worktree);
*/
struct set_gitdir_args {
const char *commondir;
- const char *object_dir;
const char *graft_file;
const char *index_file;
- const char *alternate_db;
bool disable_ref_updates;
- bool skip_initializing_odb;
};
void repo_set_gitdir(struct repository *repo, const char *root,
struct strvec to_free = STRVEC_INIT;
args.commondir = getenv_safe(&to_free, GIT_COMMON_DIR_ENVIRONMENT);
- args.object_dir = getenv_safe(&to_free, DB_ENVIRONMENT);
args.graft_file = getenv_safe(&to_free, GRAFT_ENVIRONMENT);
args.index_file = getenv_safe(&to_free, INDEX_ENVIRONMENT);
- args.alternate_db = getenv_safe(&to_free, ALTERNATE_DB_ENVIRONMENT);
if (getenv(GIT_QUARANTINE_ENVIRONMENT))
args.disable_ref_updates = true;
- args.skip_initializing_odb = skip_initializing_odb;
repo_set_gitdir(repo, git_dir, &args);
strvec_clear(&to_free);
+ if (!skip_initializing_odb)
+ repo->objects = odb_new(repo, getenv_safe(&to_free, DB_ENVIRONMENT),
+ getenv_safe(&to_free, ALTERNATE_DB_ENVIRONMENT));
+
if (getenv(NO_REPLACE_OBJECTS_ENVIRONMENT))
disable_replace_refs();
replace_ref_base = getenv(GIT_REPLACE_REF_BASE_ENVIRONMENT);