diff options
Diffstat (limited to 'path.c')
| -rw-r--r-- | path.c | 35 | 
1 files changed, 7 insertions, 28 deletions
@@ -471,39 +471,19 @@ const char *worktree_git_path(const struct worktree *wt, const char *fmt, ...)  }  /* Returns 0 on success, negative on failure. */ -#define SUBMODULE_PATH_ERR_NOT_CONFIGURED -1  static int do_submodule_path(struct strbuf *buf, const char *path,  			     const char *fmt, va_list args)  { -	const char *git_dir;  	struct strbuf git_submodule_common_dir = STRBUF_INIT;  	struct strbuf git_submodule_dir = STRBUF_INIT; -	const struct submodule *sub; -	int err = 0; +	int ret; -	strbuf_addstr(buf, path); -	strbuf_complete(buf, '/'); -	strbuf_addstr(buf, ".git"); - -	git_dir = read_gitfile(buf->buf); -	if (git_dir) { -		strbuf_reset(buf); -		strbuf_addstr(buf, git_dir); -	} -	if (!is_git_directory(buf->buf)) { -		gitmodules_config(); -		sub = submodule_from_path(null_sha1, path); -		if (!sub) { -			err = SUBMODULE_PATH_ERR_NOT_CONFIGURED; -			goto cleanup; -		} -		strbuf_reset(buf); -		strbuf_git_path(buf, "%s/%s", "modules", sub->name); -	} - -	strbuf_addch(buf, '/'); -	strbuf_addbuf(&git_submodule_dir, buf); +	ret = submodule_to_gitdir(&git_submodule_dir, path); +	if (ret) +		goto cleanup; +	strbuf_complete(&git_submodule_dir, '/'); +	strbuf_addbuf(buf, &git_submodule_dir);  	strbuf_vaddf(buf, fmt, args);  	if (get_common_dir_noenv(&git_submodule_common_dir, git_submodule_dir.buf)) @@ -514,8 +494,7 @@ static int do_submodule_path(struct strbuf *buf, const char *path,  cleanup:  	strbuf_release(&git_submodule_dir);  	strbuf_release(&git_submodule_common_dir); - -	return err; +	return ret;  }  char *git_pathdup_submodule(const char *path, const char *fmt, ...)  | 
