path: refactor repo_worktree_path()
family of functions
As explained in an earlier commit, we're refactoring path-related functions to provide a consistent interface for computing paths into the commondir, gitdir and worktree. Refactor the "worktree" family of functions accordingly. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
bdfc07bfdf
commit
93a8cfaf3c
28
path.c
28
path.c
@ -519,9 +519,6 @@ char *repo_worktree_path(const struct repository *repo, const char *fmt, ...)
|
||||
struct strbuf path = STRBUF_INIT;
|
||||
va_list args;
|
||||
|
||||
if (!repo->worktree)
|
||||
return NULL;
|
||||
|
||||
va_start(args, fmt);
|
||||
do_worktree_path(repo, &path, fmt, args);
|
||||
va_end(args);
|
||||
@ -529,18 +526,37 @@ char *repo_worktree_path(const struct repository *repo, const char *fmt, ...)
|
||||
return strbuf_detach(&path, NULL);
|
||||
}
|
||||
|
||||
void strbuf_repo_worktree_path(struct strbuf *sb,
|
||||
const struct repository *repo,
|
||||
const char *repo_worktree_path_append(const struct repository *repo,
|
||||
struct strbuf *sb,
|
||||
const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
if (!repo->worktree)
|
||||
return;
|
||||
return NULL;
|
||||
|
||||
va_start(args, fmt);
|
||||
do_worktree_path(repo, sb, fmt, args);
|
||||
va_end(args);
|
||||
|
||||
return sb->buf;
|
||||
}
|
||||
|
||||
const char *repo_worktree_path_replace(const struct repository *repo,
|
||||
struct strbuf *sb,
|
||||
const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
strbuf_reset(sb);
|
||||
if (!repo->worktree)
|
||||
return NULL;
|
||||
|
||||
va_start(args, fmt);
|
||||
do_worktree_path(repo, sb, fmt, args);
|
||||
va_end(args);
|
||||
|
||||
return sb->buf;
|
||||
}
|
||||
|
||||
/* Returns 0 on success, negative on failure. */
|
||||
|
20
path.h
20
path.h
@ -75,22 +75,20 @@ const char *worktree_git_path(struct repository *r,
|
||||
__attribute__((format (printf, 3, 4)));
|
||||
|
||||
/*
|
||||
* Return a path into the worktree of repository `repo`.
|
||||
* The `repo_worktree_path` family of functions will construct a path into a
|
||||
* repository's worktree.
|
||||
*
|
||||
* If the repository doesn't have a worktree NULL is returned.
|
||||
* Returns a `NULL` pointer in case the repository has no worktree.
|
||||
*/
|
||||
char *repo_worktree_path(const struct repository *repo,
|
||||
const char *fmt, ...)
|
||||
__attribute__((format (printf, 2, 3)));
|
||||
|
||||
/*
|
||||
* Construct a path into the worktree of repository `repo` and append it
|
||||
* to the provided buffer `sb`.
|
||||
*
|
||||
* If the repository doesn't have a worktree nothing will be appended to `sb`.
|
||||
*/
|
||||
void strbuf_repo_worktree_path(struct strbuf *sb,
|
||||
const struct repository *repo,
|
||||
const char *repo_worktree_path_append(const struct repository *repo,
|
||||
struct strbuf *sb,
|
||||
const char *fmt, ...)
|
||||
__attribute__((format (printf, 3, 4)));
|
||||
const char *repo_worktree_path_replace(const struct repository *repo,
|
||||
struct strbuf *sb,
|
||||
const char *fmt, ...)
|
||||
__attribute__((format (printf, 3, 4)));
|
||||
|
||||
|
@ -312,8 +312,8 @@ int repo_submodule_init(struct repository *subrepo,
|
||||
struct strbuf worktree = STRBUF_INIT;
|
||||
int ret = 0;
|
||||
|
||||
strbuf_repo_worktree_path(&gitdir, superproject, "%s/.git", path);
|
||||
strbuf_repo_worktree_path(&worktree, superproject, "%s", path);
|
||||
repo_worktree_path_append(superproject, &gitdir, "%s/.git", path);
|
||||
repo_worktree_path_append(superproject, &worktree, "%s", path);
|
||||
|
||||
if (repo_init(subrepo, gitdir.buf, worktree.buf)) {
|
||||
/*
|
||||
|
Reference in New Issue
Block a user