path: refactor repo_common_path()
family of functions
The functions provided by the "path" subsystem to derive repository paths for the commondir, gitdir, worktrees and submodules are quite inconsistent. Some functions have a `strbuf_` prefix, others have different return values, some don't provide a variant working on top of `strbuf`s. We're thus about to refactor all of these family of functions so that they follow a common pattern: - `repo_*_path()` returns an allocated string. - `repo_*_path_append()` appends the path to the caller-provided buffer while returning a constant pointer to the buffer. This clarifies whether the buffer is being appended to or rewritten, which otherwise wasn't immediately obvious. - `repo_*_path_replace()` replaces contents of the buffer with the computed path, again returning a pointer to the buffer contents. The returned constant pointer isn't being used anywhere yet, but it will be used in subsequent commits. Its intent is to allow calling patterns like the following somewhat contrived example: if (!stat(&st, repo_common_path_replace(repo, &buf, ...)) && !unlink(repo_common_path_replace(repo, &buf, ...))) ... Refactor the commondir family of functions accordingly and adapt all callers. Note that `repo_common_pathv()` is converted into an internal implementation detail. It is only used to implement `the_repository` compatibility shims and will eventually be removed from the public interface. 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
bc204b7427
commit
70a16ff8a1
4
setup.c
4
setup.c
@ -792,7 +792,7 @@ int upgrade_repository_format(int target_version)
|
||||
struct repository_format repo_fmt = REPOSITORY_FORMAT_INIT;
|
||||
int ret;
|
||||
|
||||
strbuf_git_common_path(&sb, the_repository, "config");
|
||||
repo_common_path_append(the_repository, &sb, "config");
|
||||
read_repository_format(&repo_fmt, sb.buf);
|
||||
strbuf_release(&sb);
|
||||
|
||||
@ -2242,7 +2242,7 @@ void initialize_repository_version(int hash_algo,
|
||||
struct strbuf config = STRBUF_INIT;
|
||||
struct repository_format repo_fmt = REPOSITORY_FORMAT_INIT;
|
||||
|
||||
strbuf_git_common_path(&config, the_repository, "config");
|
||||
repo_common_path_append(the_repository, &config, "config");
|
||||
read_repository_format(&repo_fmt, config.buf);
|
||||
|
||||
if (repo_fmt.v1_only_extensions.nr)
|
||||
|
Reference in New Issue
Block a user