All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "John Cai via GitGitGadget" <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org,  John Cai <johncai86@gmail.com>
Subject: Re: [PATCH 3/4] apply: remove the_repository global variable
Date: Tue, 24 Sep 2024 11:32:07 -0700	[thread overview]
Message-ID: <xmqq7cb0ucm0.fsf@gitster.g> (raw)
In-Reply-To: <4ce463defa807fb99eef6ce7abcd758fc2065c13.1727185364.git.gitgitgadget@gmail.com> (John Cai via GitGitGadget's message of "Tue, 24 Sep 2024 13:42:43 +0000")

"John Cai via GitGitGadget" <gitgitgadget@gmail.com> writes:

> From: John Cai <johncai86@gmail.com>
>
> Remove the_repository global variable in favor of the repository
> argument that gets passed in through the builtin function.
>
> Signed-off-by: John Cai <johncai86@gmail.com>
> ---
>  builtin/apply.c | 9 ++++-----
>  1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/builtin/apply.c b/builtin/apply.c
> index 84f1863d3ac..d0bafbec7e4 100644
> --- a/builtin/apply.c
> +++ b/builtin/apply.c
> @@ -1,4 +1,3 @@
> -#define USE_THE_REPOSITORY_VARIABLE
>  #include "builtin.h"
>  #include "gettext.h"
>  #include "hash.h"
> @@ -12,14 +11,14 @@ static const char * const apply_usage[] = {
>  int cmd_apply(int argc,
>  	      const char **argv,
>  	      const char *prefix,
> -	      struct repository *repo UNUSED)
> +	      struct repository *repo)
>  {
>  	int force_apply = 0;
>  	int options = 0;
>  	int ret;
>  	struct apply_state state;
>  
> -	if (init_apply_state(&state, the_repository, prefix))
> +	if (init_apply_state(&state, repo, prefix))
>  		exit(128);

Hmph, the reason why we do not segfault with this patch is because
repo will _always_ be the_repository due to the previous change.

I am not sure if [1/4] is an improvement, though.  We used to be
able to tell if we were running in a repository, or we were running
in "nongit" mode, by looking at the NULL-ness of repo (which was
UNUSED because we weren't taking advantage of that).  

With [1/4], it no longer is possible.  From the point of view of API
to call into builtin implementations, it smells like a regression.

A more honest change for this hunk would rather be something like:

        -	if (init_apply_state(&state, the_repository, prefix))
        +	if (!repo)
        +		repo = the_repository;
        +	if (init_apply_state(&state, repo, prefix))

without [1/4].  This change does not address "apply still depends on
having access to the_repository even when it is being used as a better
GNU patch" issue at all.

So, no, while I earlier said I was happy with [1/4], I no longer am
enthused by the change.

  reply	other threads:[~2024-09-24 18:32 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-24 13:42 [PATCH 0/4] Remove the_repository global for am, annotate, apply, archive builtins John Cai via GitGitGadget
2024-09-24 13:42 ` [PATCH 1/4] git: pass in repo for RUN_SETUP_GENTLY John Cai via GitGitGadget
2024-09-24 15:24   ` shejialuo
2024-09-24 17:45     ` Junio C Hamano
2024-09-24 17:58   ` Junio C Hamano
2024-09-26 14:24   ` Patrick Steinhardt
2024-09-26 16:41     ` Junio C Hamano
2024-09-24 13:42 ` [PATCH 2/4] annotate: remove usage of the_repository global John Cai via GitGitGadget
2024-09-24 13:42 ` [PATCH 3/4] apply: remove the_repository global variable John Cai via GitGitGadget
2024-09-24 18:32   ` Junio C Hamano [this message]
2024-09-24 18:50     ` Junio C Hamano
2024-09-26 18:59     ` John Cai
2024-09-26 19:17       ` Junio C Hamano
2024-09-24 13:42 ` [PATCH 4/4] archive: " John Cai via GitGitGadget
2024-09-24 18:35   ` Junio C Hamano
2024-09-30 17:40 ` [PATCH v2 0/4] Remove the_repository global for am, annotate, apply, archive builtins John Cai via GitGitGadget
2024-09-30 17:40   ` [PATCH v2 1/4] git: pass in repo for RUN_SETUP_GENTLY John Cai via GitGitGadget
2024-09-30 19:40     ` Junio C Hamano
2024-10-01  4:21     ` shejialuo
2024-09-30 17:40   ` [PATCH v2 2/4] annotate: remove usage of the_repository global John Cai via GitGitGadget
2024-09-30 19:43     ` Junio C Hamano
2024-09-30 17:40   ` [PATCH v2 3/4] apply: remove the_repository global variable John Cai via GitGitGadget
2024-09-30 20:06     ` Junio C Hamano
2024-10-01  4:58       ` shejialuo
2024-10-01 12:32         ` Patrick Steinhardt
2024-10-01 13:40           ` shejialuo
2024-10-01 14:09             ` Patrick Steinhardt
2024-10-01 17:10           ` Junio C Hamano
2024-10-03 18:28             ` johncai86
2024-09-30 17:40   ` [PATCH v2 4/4] archive: " John Cai via GitGitGadget
2024-09-30 20:01     ` Junio C Hamano
2024-10-04 20:05       ` johncai86
2024-10-05  3:30   ` [PATCH v3 0/3] Remove the_repository global for am, annotate, apply, archive builtins John Cai via GitGitGadget
2024-10-05  3:30     ` [PATCH v3 1/3] git: pass in repo to builtin based on setup_git_directory_gently John Cai via GitGitGadget
2024-10-05  6:51       ` shejialuo
2024-10-05  3:30     ` [PATCH v3 2/3] annotate: remove usage of the_repository global John Cai via GitGitGadget
2024-10-05  3:30     ` [PATCH v3 3/3] archive: remove the_repository global variable John Cai via GitGitGadget
2024-10-05  7:13       ` shejialuo
2024-10-10 18:27         ` johncai86
2024-10-10 21:13     ` [PATCH v4 0/3] Remove the_repository global for am, annotate, apply, archive builtins John Cai via GitGitGadget
2024-10-10 21:13       ` [PATCH v4 1/3] git: pass in repo to builtin based on setup_git_directory_gently John Cai via GitGitGadget
2024-10-10 21:13       ` [PATCH v4 2/3] annotate: remove usage of the_repository global John Cai via GitGitGadget
2024-10-10 21:13       ` [PATCH v4 3/3] archive: remove the_repository global variable John Cai via GitGitGadget
2024-10-11 17:47       ` [PATCH v4 0/3] Remove the_repository global for am, annotate, apply, archive builtins Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqq7cb0ucm0.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=johncai86@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.