Re: [PATCH v2 02/27] init-db: remove unnecessary global variable
- From
Glen Choo <chooglen@google.com>
- Date
- May 12, 2023, 20:20 UTC
- Message-ID
- <kl6l7ctdz4hk.fsf@chooglen-macbookpro.roam.corp.google.com>
- In-Reply-To
- <5ba9d6e68ad255a64eb7e5ad6ca53bc55c771ff4.1683875070.git.gitgitgadget@gmail.com>
"Elijah Newren via GitGitGadget" <gitgitgadget@gmail.com> writes:
Show 10 quoted lines
> init_is_bare_repository's sole use in life it to cache a value in > init_db(), and then be used in create_default_files(). This is a bit > odd since init_db() directly calls create_default_files(), and is the > only caller of that function. Convert the global to a simple function > parameter instead. > > (Of course, this doesn't fix the fact that this value is then ignored by > create_default_files(), as noted in a big TODO comment in that function, > but it at least includes no behavioral change other than getting rid of > a very questionable global variable.)
Ah, I didn't spot v2 when I typed my earlier reply. Yeah this makes a lot of sense within this series.
Show 68 quoted lines
> @@ -31,7 +31,6 @@
>
> #define GIT_DEFAULT_HASH_ENVIRONMENT "GIT_DEFAULT_HASH"
>
> -static int init_is_bare_repository = 0;
> static int init_shared_repository = -1;
>
> static void copy_templates_1(struct strbuf *path, struct strbuf *template_path,
> @@ -199,6 +198,7 @@ static int create_default_files(const char *template_path,
> const char *original_git_dir,
> const char *initial_branch,
> const struct repository_format *fmt,
> + int prev_bare_repository,
> int quiet)
> {
> struct stat st1;
> @@ -237,7 +237,7 @@ static int create_default_files(const char *template_path,
> * TODO: heed core.bare from config file in templates if no
> * command-line override given
> */
> - is_bare_repository_cfg = init_is_bare_repository || !work_tree;
> + is_bare_repository_cfg = prev_bare_repository || !work_tree;
> /* TODO (continued):
> *
> * Unfortunately, the line above is equivalent to
> @@ -246,7 +246,7 @@ static int create_default_files(const char *template_path,
> * command line option was present.
> *
> * To see why, note that before this function, there was this call:
> - * init_is_bare_repository = is_bare_repository()
> + * prev_bare_repository = is_bare_repository()
> * expanding the right hande side:
> * = is_bare_repository_cfg && !get_git_work_tree()
> * = is_bare_repository_cfg && !work_tree
> @@ -256,7 +256,7 @@ static int create_default_files(const char *template_path,
> * calls will return the same result each time. So, what we are
> * interested in computing is the right hand side of the line of
> * code just above this comment:
> - * init_is_bare_repository || !work_tree
> + * prev_bare_repository || !work_tree
> * = is_bare_repository_cfg && !work_tree || !work_tree
> * = !work_tree
> * because "A && !B || !B == !B" for all boolean values of A & B.
> @@ -424,6 +424,7 @@ int init_db(const char *git_dir, const char *real_git_dir,
> int exist_ok = flags & INIT_DB_EXIST_OK;
> char *original_git_dir = real_pathdup(git_dir, 1);
> struct repository_format repo_fmt = REPOSITORY_FORMAT_INIT;
> + int prev_bare_repository;
>
> if (real_git_dir) {
> struct stat st;
> @@ -449,7 +450,7 @@ int init_db(const char *git_dir, const char *real_git_dir,
>
> safe_create_dir(git_dir, 0);
>
> - init_is_bare_repository = is_bare_repository();
> + prev_bare_repository = is_bare_repository();
>
> /* Check to see if the repository version is right.
> * Note that a newly created repository does not have
> @@ -462,6 +463,7 @@ int init_db(const char *git_dir, const char *real_git_dir,
>
> reinit = create_default_files(template_dir, original_git_dir,
> initial_branch, &repo_fmt,
> + prev_bare_repository,
> flags & INIT_DB_QUIET);
> if (reinit && initial_branch)
> warning(_("re-init: ignored --initial-branch=%s"),The patch looks trivially correct.