path: drop `git_pathdup()` in favor of `repo_git_path()`

Remove `git_pathdup()` in favor of `repo_git_path()`. The latter does
essentially the same, with the only exception that it does not rely on
`the_repository` but takes the repo as separate parameter.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Patrick Steinhardt 2025-02-07 12:03:32 +01:00 committed by Junio C Hamano
parent 7f17900b5b
commit bba59f58a4
16 changed files with 22 additions and 36 deletions

View File

@ -930,7 +930,7 @@ static enum bisect_error check_good_are_ancestors_of_bad(struct repository *r,
if (!current_bad_oid) if (!current_bad_oid)
return error(_("a %s revision is needed"), term_bad); return error(_("a %s revision is needed"), term_bad);


filename = git_pathdup("BISECT_ANCESTORS_OK"); filename = repo_git_path(the_repository, "BISECT_ANCESTORS_OK");


/* Check if file BISECT_ANCESTORS_OK exists. */ /* Check if file BISECT_ANCESTORS_OK exists. */
if (!stat(filename, &st) && S_ISREG(st.st_mode)) if (!stat(filename, &st) && S_ISREG(st.st_mode))

View File

@ -158,7 +158,7 @@ static void am_state_init(struct am_state *state)


memset(state, 0, sizeof(*state)); memset(state, 0, sizeof(*state));


state->dir = git_pathdup("rebase-apply"); state->dir = repo_git_path(the_repository, "rebase-apply");


state->prec = 4; state->prec = 4;



View File

@ -938,7 +938,7 @@ static void write_refspec_config(const char *src_ref_prefix,


static void dissociate_from_references(void) static void dissociate_from_references(void)
{ {
char *alternates = git_pathdup("objects/info/alternates"); char *alternates = repo_git_path(the_repository, "objects/info/alternates");


if (!access(alternates, F_OK)) { if (!access(alternates, F_OK)) {
struct child_process cmd = CHILD_PROCESS_INIT; struct child_process cmd = CHILD_PROCESS_INIT;

View File

@ -775,13 +775,13 @@ static void location_options_init(struct config_location_options *opts,
opts->source.file = opts->file_to_free = git_system_config(); opts->source.file = opts->file_to_free = git_system_config();
opts->source.scope = CONFIG_SCOPE_SYSTEM; opts->source.scope = CONFIG_SCOPE_SYSTEM;
} else if (opts->use_local_config) { } else if (opts->use_local_config) {
opts->source.file = opts->file_to_free = git_pathdup("config"); opts->source.file = opts->file_to_free = repo_git_path(the_repository, "config");
opts->source.scope = CONFIG_SCOPE_LOCAL; opts->source.scope = CONFIG_SCOPE_LOCAL;
} else if (opts->use_worktree_config) { } else if (opts->use_worktree_config) {
struct worktree **worktrees = get_worktrees(); struct worktree **worktrees = get_worktrees();
if (the_repository->repository_format_worktree_config) if (the_repository->repository_format_worktree_config)
opts->source.file = opts->file_to_free = opts->source.file = opts->file_to_free =
git_pathdup("config.worktree"); repo_git_path(the_repository, "config.worktree");
else if (worktrees[0] && worktrees[1]) else if (worktrees[0] && worktrees[1])
die(_("--worktree cannot be used with multiple " die(_("--worktree cannot be used with multiple "
"working trees unless the config\n" "working trees unless the config\n"
@ -790,7 +790,7 @@ static void location_options_init(struct config_location_options *opts,
"section in \"git help worktree\" for details")); "section in \"git help worktree\" for details"));
else else
opts->source.file = opts->file_to_free = opts->source.file = opts->file_to_free =
git_pathdup("config"); repo_git_path(the_repository, "config");
opts->source.scope = CONFIG_SCOPE_LOCAL; opts->source.scope = CONFIG_SCOPE_LOCAL;
free_worktrees(worktrees); free_worktrees(worktrees);
} else if (opts->source.file) { } else if (opts->source.file) {
@ -1087,7 +1087,7 @@ static int show_editor(struct config_location_options *opts)
git_config(git_default_config, NULL); git_config(git_default_config, NULL);
config_file = opts->source.file ? config_file = opts->source.file ?
xstrdup(opts->source.file) : xstrdup(opts->source.file) :
git_pathdup("config"); repo_git_path(the_repository, "config");
if (opts->use_global_config) { if (opts->use_global_config) {
int fd = open(config_file, O_CREAT | O_EXCL | O_WRONLY, 0666); int fd = open(config_file, O_CREAT | O_EXCL | O_WRONLY, 0666);
if (fd >= 0) { if (fd >= 0) {

View File

@ -328,7 +328,7 @@ static void write_branch_report(FILE *rpt, struct branch *b)


static void write_crash_report(const char *err) static void write_crash_report(const char *err)
{ {
char *loc = git_pathdup("fast_import_crash_%"PRIuMAX, (uintmax_t) getpid()); char *loc = repo_git_path(the_repository, "fast_import_crash_%"PRIuMAX, (uintmax_t) getpid());
FILE *rpt = fopen(loc, "w"); FILE *rpt = fopen(loc, "w");
struct branch *b; struct branch *b;
unsigned long lu; unsigned long lu;
@ -3280,7 +3280,7 @@ static char* make_fast_import_path(const char *path)
{ {
if (!relative_marks_paths || is_absolute_path(path)) if (!relative_marks_paths || is_absolute_path(path))
return prefix_filename(global_prefix, path); return prefix_filename(global_prefix, path);
return git_pathdup("info/fast-import/%s", path); return repo_git_path(the_repository, "info/fast-import/%s", path);
} }


static void option_import_marks(const char *marks, static void option_import_marks(const char *marks,

View File

@ -326,7 +326,7 @@ static void check_unreachable_object(struct object *obj)
printable_type(&obj->oid, obj->type), printable_type(&obj->oid, obj->type),
describe_object(&obj->oid)); describe_object(&obj->oid));
if (write_lost_and_found) { if (write_lost_and_found) {
char *filename = git_pathdup("lost-found/%s/%s", char *filename = repo_git_path(the_repository, "lost-found/%s/%s",
obj->type == OBJ_COMMIT ? "commit" : "other", obj->type == OBJ_COMMIT ? "commit" : "other",
describe_object(&obj->oid)); describe_object(&obj->oid));
FILE *f; FILE *f;

View File

@ -546,7 +546,7 @@ static const char *lock_repo_for_gc(int force, pid_t* ret_pid)
if (xgethostname(my_host, sizeof(my_host))) if (xgethostname(my_host, sizeof(my_host)))
xsnprintf(my_host, sizeof(my_host), "unknown"); xsnprintf(my_host, sizeof(my_host), "unknown");


pidfile_path = git_pathdup("gc.pid"); pidfile_path = repo_git_path(the_repository, "gc.pid");
fd = hold_lock_file_for_update(&lock, pidfile_path, fd = hold_lock_file_for_update(&lock, pidfile_path,
LOCK_DIE_ON_ERROR); LOCK_DIE_ON_ERROR);
if (!force) { if (!force) {
@ -607,7 +607,7 @@ static int report_last_gc_error(void)
int ret = 0; int ret = 0;
ssize_t len; ssize_t len;
struct stat st; struct stat st;
char *gc_log_path = git_pathdup("gc.log"); char *gc_log_path = repo_git_path(the_repository, "gc.log");


if (stat(gc_log_path, &st)) { if (stat(gc_log_path, &st)) {
if (errno == ENOENT) if (errno == ENOENT)

View File

@ -197,7 +197,7 @@ static void prepare_note_data(const struct object_id *object, struct note_data *
struct strbuf buf = STRBUF_INIT; struct strbuf buf = STRBUF_INIT;


/* write the template message before editing: */ /* write the template message before editing: */
d->edit_path = git_pathdup("NOTES_EDITMSG"); d->edit_path = repo_git_path(the_repository, "NOTES_EDITMSG");
fd = xopen(d->edit_path, O_CREAT | O_TRUNC | O_WRONLY, 0600); fd = xopen(d->edit_path, O_CREAT | O_TRUNC | O_WRONLY, 0600);


if (d->msg_nr) if (d->msg_nr)

View File

@ -345,7 +345,7 @@ static int edit_and_replace(const char *object_ref, int force, int raw)
} }
strbuf_release(&ref); strbuf_release(&ref);


tmpfile = git_pathdup("REPLACE_EDITOBJ"); tmpfile = repo_git_path(the_repository, "REPLACE_EDITOBJ");
if (export_object(&old_oid, type, raw, tmpfile)) { if (export_object(&old_oid, type, raw, tmpfile)) {
free(tmpfile); free(tmpfile);
return -1; return -1;

View File

@ -667,7 +667,7 @@ int cmd_tag(int argc,
if (create_tag_object) { if (create_tag_object) {
if (force_sign_annotate && !annotate) if (force_sign_annotate && !annotate)
opt.sign = 1; opt.sign = 1;
path = git_pathdup("TAG_EDITMSG"); path = repo_git_path(the_repository, "TAG_EDITMSG");
create_tag(&object, object_ref, tag, &buf, &opt, &prev, &object, create_tag(&object, object_ref, tag, &buf, &opt, &prev, &object,
&trailer_args, path); &trailer_args, path);
} }

View File

@ -337,7 +337,7 @@ static void check_candidate_path(const char *path,


static void copy_sparse_checkout(const char *worktree_git_dir) static void copy_sparse_checkout(const char *worktree_git_dir)
{ {
char *from_file = git_pathdup("info/sparse-checkout"); char *from_file = repo_git_path(the_repository, "info/sparse-checkout");
char *to_file = xstrfmt("%s/info/sparse-checkout", worktree_git_dir); char *to_file = xstrfmt("%s/info/sparse-checkout", worktree_git_dir);


if (file_exists(from_file)) { if (file_exists(from_file)) {
@ -353,7 +353,7 @@ static void copy_sparse_checkout(const char *worktree_git_dir)


static void copy_filtered_worktree_config(const char *worktree_git_dir) static void copy_filtered_worktree_config(const char *worktree_git_dir)
{ {
char *from_file = git_pathdup("config.worktree"); char *from_file = repo_git_path(the_repository, "config.worktree");
char *to_file = xstrfmt("%s/config.worktree", worktree_git_dir); char *to_file = xstrfmt("%s/config.worktree", worktree_git_dir);


if (file_exists(from_file)) { if (file_exists(from_file)) {

2
dir.c
View File

@ -3455,7 +3455,7 @@ void setup_standard_excludes(struct dir_struct *dir)


char *get_sparse_checkout_filename(void) char *get_sparse_checkout_filename(void)
{ {
return git_pathdup("info/sparse-checkout"); return repo_git_path(the_repository, "info/sparse-checkout");
} }


int get_sparse_checkout_patterns(struct pattern_list *pl) int get_sparse_checkout_patterns(struct pattern_list *pl)

View File

@ -183,7 +183,7 @@ static void send_strbuf(struct strbuf *hdr,
static void send_local_file(struct strbuf *hdr, const char *the_type, static void send_local_file(struct strbuf *hdr, const char *the_type,
const char *name) const char *name)
{ {
char *p = git_pathdup("%s", name); char *p = repo_git_path(the_repository, "%s", name);
size_t buf_alloc = 8192; size_t buf_alloc = 8192;
char *buf = xmalloc(buf_alloc); char *buf = xmalloc(buf_alloc);
int fd; int fd;

View File

@ -309,7 +309,7 @@ static void write_buf_to_worktree(const struct object_id *obj,
const char *buf, unsigned long size) const char *buf, unsigned long size)
{ {
int fd; int fd;
char *path = git_pathdup(NOTES_MERGE_WORKTREE "/%s", oid_to_hex(obj)); char *path = repo_git_path(the_repository, NOTES_MERGE_WORKTREE "/%s", oid_to_hex(obj));
if (safe_create_leading_directories_const(path)) if (safe_create_leading_directories_const(path))
die_errno("unable to create directory for '%s'", path); die_errno("unable to create directory for '%s'", path);



View File

@ -717,7 +717,7 @@ static void read_info_alternates(struct repository *r,
void add_to_alternates_file(const char *reference) void add_to_alternates_file(const char *reference)
{ {
struct lock_file lock = LOCK_INIT; struct lock_file lock = LOCK_INIT;
char *alts = git_pathdup("objects/info/alternates"); char *alts = repo_git_path(the_repository, "objects/info/alternates");
FILE *in, *out; FILE *in, *out;
int found = 0; int found = 0;



16
path.h
View File

@ -292,24 +292,10 @@ static inline const char *git_path(const char *fmt, ...)
{ \ { \
static char *ret; \ static char *ret; \
if (!ret) \ if (!ret) \
ret = git_pathdup(filename); \ ret = repo_git_path(the_repository, filename); \
return ret; \ return ret; \
} }


/*
* Return a path into the main repository's (the_repository) git directory.
*/
__attribute__((format (printf, 1, 2)))
static inline char *git_pathdup(const char *fmt, ...)
{
struct strbuf path = STRBUF_INIT;
va_list args;
va_start(args, fmt);
repo_git_pathv(the_repository, NULL, &path, fmt, args);
va_end(args);
return strbuf_detach(&path, NULL);
}

# endif /* USE_THE_REPOSITORY_VARIABLE */ # endif /* USE_THE_REPOSITORY_VARIABLE */


#endif /* PATH_H */ #endif /* PATH_H */