path: drop git_path() in favor of repo_git_path()
Remove `git_path()` in favor of the `repo_git_path()` family of functions, which makes the implicit dependency on `the_repository` go away. Note that `git_path()` returned a string allocated via `get_pathname()`, which uses a rotating set of statically allocated buffers. Consequently, callers didn't have to free the returned string. The same isn't true for `repo_common_path()`, so we also have to add logic to free the returned strings. This refactoring also allows us to remove `repo_common_pathv()` as well as `get_pathname()` 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
8ee018d863
commit
88dd321cfe
@@ -275,34 +275,38 @@ static void diff_tree_local(struct notes_merge_options *o,
|
||||
|
||||
static void check_notes_merge_worktree(struct notes_merge_options *o)
|
||||
{
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
|
||||
if (!o->has_worktree) {
|
||||
/*
|
||||
* Must establish NOTES_MERGE_WORKTREE.
|
||||
* Abort if NOTES_MERGE_WORKTREE already exists
|
||||
*/
|
||||
if (file_exists(git_path(NOTES_MERGE_WORKTREE)) &&
|
||||
!is_empty_dir(git_path(NOTES_MERGE_WORKTREE))) {
|
||||
if (file_exists(repo_git_path_replace(the_repository, &buf, NOTES_MERGE_WORKTREE)) &&
|
||||
!is_empty_dir(repo_git_path_replace(the_repository, &buf, NOTES_MERGE_WORKTREE))) {
|
||||
if (advice_enabled(ADVICE_RESOLVE_CONFLICT))
|
||||
die(_("You have not concluded your previous "
|
||||
"notes merge (%s exists).\nPlease, use "
|
||||
"'git notes merge --commit' or 'git notes "
|
||||
"merge --abort' to commit/abort the "
|
||||
"previous merge before you start a new "
|
||||
"notes merge."), git_path("NOTES_MERGE_*"));
|
||||
"notes merge."), repo_git_path_replace(the_repository, &buf, "NOTES_MERGE_*"));
|
||||
else
|
||||
die(_("You have not concluded your notes merge "
|
||||
"(%s exists)."), git_path("NOTES_MERGE_*"));
|
||||
"(%s exists)."), repo_git_path_replace(the_repository, &buf, "NOTES_MERGE_*"));
|
||||
}
|
||||
|
||||
if (safe_create_leading_directories_const(git_path(
|
||||
if (safe_create_leading_directories_const(repo_git_path_replace(the_repository, &buf,
|
||||
NOTES_MERGE_WORKTREE "/.test")))
|
||||
die_errno("unable to create directory %s",
|
||||
git_path(NOTES_MERGE_WORKTREE));
|
||||
repo_git_path_replace(the_repository, &buf, NOTES_MERGE_WORKTREE));
|
||||
o->has_worktree = 1;
|
||||
} else if (!file_exists(git_path(NOTES_MERGE_WORKTREE)))
|
||||
} else if (!file_exists(repo_git_path_replace(the_repository, &buf, NOTES_MERGE_WORKTREE)))
|
||||
/* NOTES_MERGE_WORKTREE should already be established */
|
||||
die("missing '%s'. This should not happen",
|
||||
git_path(NOTES_MERGE_WORKTREE));
|
||||
repo_git_path_replace(the_repository, &buf, NOTES_MERGE_WORKTREE));
|
||||
|
||||
strbuf_release(&buf);
|
||||
}
|
||||
|
||||
static void write_buf_to_worktree(const struct object_id *obj,
|
||||
|
||||
Reference in New Issue
Block a user