Migrate 'work_tree' to be stored in 'the_repository'.
Signed-off-by: Brandon Williams <[email protected]>
---
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