environment: make get_graft_file() accept a repository

The `get_graft_file()` function retrieves the path to the graft file of
`the_repository`. Make it accept a `struct repository` such that it can
work on arbitrary repositories and make it part of the repository
subsystem. This reduces our reliance on `the_repository` and clarifies
scope.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Patrick Steinhardt 2024-09-12 13:29:35 +02:00 committed by Junio C Hamano
parent 1dc4ec2102
commit 14c90ac088
6 changed files with 11 additions and 13 deletions

View File

@ -11,7 +11,6 @@
#include "builtin.h"
#include "config.h"
#include "editor.h"
#include "environment.h"
#include "gettext.h"
#include "hex.h"
#include "refs.h"
@ -514,7 +513,7 @@ static int create_graft(int argc, const char **argv, int force, int gentle)
static int convert_graft_file(int force)
{
const char *graft_file = get_graft_file(the_repository);
const char *graft_file = repo_get_graft_file(the_repository);
FILE *fp = fopen_or_warn(graft_file, "r");
struct strbuf buf = STRBUF_INIT, err = STRBUF_INIT;
struct strvec args = STRVEC_INIT;

View File

@ -292,14 +292,14 @@ static int read_graft_file(struct repository *r, const char *graft_file)
void prepare_commit_graft(struct repository *r)
{
char *graft_file;
const char *graft_file;
if (r->parsed_objects->commit_graft_prepared)
return;
if (!startup_info->have_repository)
return;
graft_file = get_graft_file(r);
graft_file = repo_get_graft_file(r);
read_graft_file(r, graft_file);
/* make sure shallows are read */
is_repository_shallow(r);

View File

@ -306,13 +306,6 @@ int odb_pack_keep(const char *name)
return open(name, O_RDWR|O_CREAT|O_EXCL, 0600);
}
char *get_graft_file(struct repository *r)
{
if (!r->graft_file)
BUG("git environment hasn't been setup");
return r->graft_file;
}
static void set_git_dir_1(const char *path)
{
xsetenv(GIT_DIR_ENVIRONMENT, path, 1);

View File

@ -1,7 +1,6 @@
#ifndef ENVIRONMENT_H
#define ENVIRONMENT_H
struct repository;
struct strvec;
/*
@ -106,7 +105,6 @@ int have_git_dir(void);
extern int is_bare_repository_cfg;
int is_bare_repository(void);
extern char *git_work_tree_cfg;
char *get_graft_file(struct repository *r);
void set_git_dir(const char *path, int make_realpath);
const char *get_git_namespace(void);
const char *strip_namespace(const char *namespaced_ref);

View File

@ -119,6 +119,13 @@ const char *repo_get_index_file(struct repository *repo)
return repo->index_file;
}
const char *repo_get_graft_file(struct repository *repo)
{
if (!repo->graft_file)
BUG("repository hasn't been set up");
return repo->graft_file;
}
static void repo_set_commondir(struct repository *repo,
const char *commondir)
{

View File

@ -210,6 +210,7 @@ const char *repo_get_git_dir(struct repository *repo);
const char *repo_get_common_dir(struct repository *repo);
const char *repo_get_object_directory(struct repository *repo);
const char *repo_get_index_file(struct repository *repo);
const char *repo_get_graft_file(struct repository *repo);
/*
* Define a custom repository layout. Any field can be NULL, which