Re: [PATCH v6 17/27] refs: move submodule code out of files-backend.c
From: Michael Haggerty <hidden>
Date: 2017-03-19 21:06:12
On 03/18/2017 03:03 AM, Nguyễn Thái Ngọc Duy wrote:
quoted hunk ↗ jump to hunk
files-backend is now initialized with a $GIT_DIR. Converting a submodule path to where real submodule gitdir is located is done in get_ref_store(). This gives a slight performance improvement for submodules since we don't convert submodule path to gitdir at every backend call like before. We pay that once at ref-store creation. More cleanup in files_downcast() and files_assert_main_repository() follows shortly. It's separate to keep noises from this patch. Signed-off-by: Nguyễn Thái Ngọc Duy <redacted> --- refs.c | 19 ++++++++++++++----- refs/files-backend.c | 24 ++---------------------- refs/refs-internal.h | 9 ++++----- 3 files changed, 20 insertions(+), 32 deletions(-) [...]diff --git a/refs/files-backend.c b/refs/files-backend.c index 351934d36e..db335e4ca6 100644 --- a/refs/files-backend.c +++ b/refs/files-backend.c[...]@@ -1014,8 +1000,7 @@ static struct ref_store *files_ref_store_create(const char *submodule) static void files_assert_main_repository(struct files_ref_store *refs, const char *caller) { - if (refs->submodule) - die("BUG: %s called for a submodule", caller); + /* This function is to be deleted in the next patch */
Actually, the function survives the next patch. But the incorrect comment doesn't ;-) Ideally, the following patch would precede this one; then this function wouldn't have to be disabled between the two patches. But given that it's only a consistency check, I suppose that we can live with the disappearance of this check for one commit. The comment could maybe be corrected, though.
quoted hunk ↗ jump to hunk
[...]diff --git a/refs/refs-internal.h b/refs/refs-internal.h index f732473e1d..dfa1817929 100644 --- a/refs/refs-internal.h +++ b/refs/refs-internal.h@@ -482,12 +482,11 @@ struct ref_store; /* refs backends */ /* - * Initialize the ref_store for the specified submodule, or for the - * main repository if submodule == NULL. These functions should call - * base_ref_store_init() to initialize the shared part of the - * ref_store and to record the ref_store for later lookup. + * Initialize the ref_store for the specified gitdir. These functions + * should call base_ref_store_init() to initialize the shared part of + * the ref_store and to record the ref_store for later lookup.
Maybe mention that the function will make its own copy of `gitdir`?
*/ -typedef struct ref_store *ref_store_init_fn(const char *submodule); +typedef struct ref_store *ref_store_init_fn(const char *gitdir); typedef int ref_init_db_fn(struct ref_store *refs, struct strbuf *err);
Michael