odb: handle recreation of quarantine directories
In the preceding commit we have moved the logic that reparents object database sources on chdir(3p) from "setup.c" into "odb.c". Let's also do the same for any temporary quarantine directories so that the complete reparenting logic is self-contained in "odb.c". Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>next
parent
2816b748e5
commit
ac65c70663
7
odb.c
7
odb.c
|
|
@ -24,6 +24,7 @@
|
|||
#include "strbuf.h"
|
||||
#include "strvec.h"
|
||||
#include "submodule.h"
|
||||
#include "tmp-objdir.h"
|
||||
#include "trace2.h"
|
||||
#include "write-or-die.h"
|
||||
|
||||
|
|
@ -1041,8 +1042,11 @@ static void odb_update_commondir(const char *name UNUSED,
|
|||
void *cb_data)
|
||||
{
|
||||
struct object_database *odb = cb_data;
|
||||
struct tmp_objdir *tmp_objdir;
|
||||
struct odb_source *source;
|
||||
|
||||
tmp_objdir = tmp_objdir_unapply_primary_odb();
|
||||
|
||||
/*
|
||||
* In theory, we only have to do this for the primary object source, as
|
||||
* alternates' paths are always resolved to an absolute path.
|
||||
|
|
@ -1059,6 +1063,9 @@ static void odb_update_commondir(const char *name UNUSED,
|
|||
free(source->path);
|
||||
source->path = path;
|
||||
}
|
||||
|
||||
if (tmp_objdir)
|
||||
tmp_objdir_reapply_primary_odb(tmp_objdir, old_cwd, new_cwd);
|
||||
}
|
||||
|
||||
struct object_database *odb_new(struct repository *repo,
|
||||
|
|
|
|||
5
setup.c
5
setup.c
|
|
@ -22,7 +22,6 @@
|
|||
#include "chdir-notify.h"
|
||||
#include "path.h"
|
||||
#include "quote.h"
|
||||
#include "tmp-objdir.h"
|
||||
#include "trace.h"
|
||||
#include "trace2.h"
|
||||
#include "worktree.h"
|
||||
|
|
@ -1056,14 +1055,10 @@ static void update_relative_gitdir(const char *name UNUSED,
|
|||
{
|
||||
char *path = reparent_relative_path(old_cwd, new_cwd,
|
||||
repo_get_git_dir(the_repository));
|
||||
struct tmp_objdir *tmp_objdir = tmp_objdir_unapply_primary_odb();
|
||||
|
||||
trace_printf_key(&trace_setup_key,
|
||||
"setup: move $GIT_DIR to '%s'",
|
||||
path);
|
||||
set_git_dir_1(path, true);
|
||||
if (tmp_objdir)
|
||||
tmp_objdir_reapply_primary_odb(tmp_objdir, old_cwd, new_cwd);
|
||||
free(path);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue