Skip to content

Commit

Permalink
move connect_work_tree_and_git_dir to dir.h
Browse files Browse the repository at this point in the history
That function was primarily used by submodule code, but the function
itself is not inherently about submodules. In the next patch we'll
introduce relocate_git_dir, which can be used by worktrees as well,
so find a neutral middle ground in dir.h.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
stefanbeller authored and gitster committed Dec 12, 2016
1 parent 1a248cf commit 47e83eb
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 26 deletions.
25 changes: 25 additions & 0 deletions dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -2748,3 +2748,28 @@ void untracked_cache_add_to_index(struct index_state *istate,
{
untracked_cache_invalidate_path(istate, path);
}

/* Update gitfile and core.worktree setting to connect work tree and git dir */
void connect_work_tree_and_git_dir(const char *work_tree_, const char *git_dir_)
{
struct strbuf file_name = STRBUF_INIT;
struct strbuf rel_path = STRBUF_INIT;
char *git_dir = xstrdup(real_path(git_dir_));
char *work_tree = xstrdup(real_path(work_tree_));

/* Update gitfile */
strbuf_addf(&file_name, "%s/.git", work_tree);
write_file(file_name.buf, "gitdir: %s",
relative_path(git_dir, work_tree, &rel_path));

/* Update core.worktree setting */
strbuf_reset(&file_name);
strbuf_addf(&file_name, "%s/config", git_dir);
git_config_set_in_file(file_name.buf, "core.worktree",
relative_path(work_tree, git_dir, &rel_path));

strbuf_release(&file_name);
strbuf_release(&rel_path);
free(work_tree);
free(git_dir);
}
1 change: 1 addition & 0 deletions dir.h
Original file line number Diff line number Diff line change
Expand Up @@ -335,4 +335,5 @@ struct untracked_cache *read_untracked_extension(const void *data, unsigned long
void write_untracked_extension(struct strbuf *out, struct untracked_cache *untracked);
void add_untracked_cache(struct index_state *istate);
void remove_untracked_cache(struct index_state *istate);
extern void connect_work_tree_and_git_dir(const char *work_tree, const char *git_dir);
#endif
25 changes: 0 additions & 25 deletions submodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -1222,31 +1222,6 @@ int merge_submodule(unsigned char result[20], const char *path,
return 0;
}

/* Update gitfile and core.worktree setting to connect work tree and git dir */
void connect_work_tree_and_git_dir(const char *work_tree_, const char *git_dir_)
{
struct strbuf file_name = STRBUF_INIT;
struct strbuf rel_path = STRBUF_INIT;
char *git_dir = xstrdup(real_path(git_dir_));
char *work_tree = xstrdup(real_path(work_tree_));

/* Update gitfile */
strbuf_addf(&file_name, "%s/.git", work_tree);
write_file(file_name.buf, "gitdir: %s",
relative_path(git_dir, work_tree, &rel_path));

/* Update core.worktree setting */
strbuf_reset(&file_name);
strbuf_addf(&file_name, "%s/config", git_dir);
git_config_set_in_file(file_name.buf, "core.worktree",
relative_path(work_tree, git_dir, &rel_path));

strbuf_release(&file_name);
strbuf_release(&rel_path);
free(work_tree);
free(git_dir);
}

int parallel_submodules(void)
{
return parallel_jobs;
Expand Down
1 change: 0 additions & 1 deletion submodule.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ int merge_submodule(unsigned char result[20], const char *path, const unsigned c
int find_unpushed_submodules(unsigned char new_sha1[20], const char *remotes_name,
struct string_list *needs_pushing);
int push_unpushed_submodules(unsigned char new_sha1[20], const char *remotes_name);
void connect_work_tree_and_git_dir(const char *work_tree, const char *git_dir);
int parallel_submodules(void);

/*
Expand Down

0 comments on commit 47e83eb

Please sign in to comment.