Migrate 'work_tree' to be stored in 'the_repository'. Signed-off-by: Brandon Williams <bmwill@xxxxxxxxxx> --- environment.c | 9 ++++----- repo.c | 7 +++++++ repo.h | 2 ++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/environment.c b/environment.c index a0519f4f3..2722ebb9f 100644 --- a/environment.c +++ b/environment.c @@ -96,7 +96,6 @@ int ignore_untracked_cache_config; /* This is set by setup_git_dir_gently() and/or git_default_config() */ char *git_work_tree_cfg; -static char *work_tree; static const char *super_prefix; @@ -220,19 +219,19 @@ void set_git_work_tree(const char *new_work_tree) { if (git_work_tree_initialized) { new_work_tree = real_path(new_work_tree); - if (strcmp(new_work_tree, work_tree)) + if (strcmp(new_work_tree, the_repository.worktree)) die("internal error: work tree has already been set\n" "Current worktree: %s\nNew worktree: %s", - work_tree, new_work_tree); + the_repository.worktree, new_work_tree); return; } git_work_tree_initialized = 1; - work_tree = real_pathdup(new_work_tree, 1); + repo_set_worktree(&the_repository, new_work_tree); } const char *get_git_work_tree(void) { - return work_tree; + return the_repository.worktree; } char *get_object_directory(void) diff --git a/repo.c b/repo.c index f7c3617a9..789ffdd78 100644 --- a/repo.c +++ b/repo.c @@ -84,6 +84,11 @@ void repo_set_gitdir(struct repo *repo, const char *path) repo_setup_env(repo); } +void repo_set_worktree(struct repo *repo, const char *path) +{ + repo->worktree = real_pathdup(path, 1); +} + int repo_init(struct repo *repo, const char *gitdir) { int error = 0; @@ -121,4 +126,6 @@ int repo_init(struct repo *repo, const char *gitdir) void repo_clear(struct repo *repo) { repo_clear_env(repo); + free(repo->worktree); + repo->worktree = NULL; } diff --git a/repo.h b/repo.h index 453049e67..95d021049 100644 --- a/repo.h +++ b/repo.h @@ -9,6 +9,7 @@ struct repo { char *index_file; char *graft_file; char *namespace; + char *worktree; /* Configurations */ unsigned ignore_env:1; @@ -19,6 +20,7 @@ struct repo { extern struct repo the_repository; extern void repo_set_gitdir(struct repo *repo, const char *path); +extern void repo_set_worktree(struct repo *repo, const char *path); extern int repo_init(struct repo *repo, const char *path); extern void repo_clear(struct repo *repo); -- 2.13.0.506.g27d5fe0cd-goog