All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: "Rubén Justo via GitGitGadget" <gitgitgadget@gmail.com>,
	git@vger.kernel.org, "Rubén Justo" <rjusto@gmail.com>
Subject: Re: [PATCH] branch: allow "-" as a short-hand for "previous branch"
Date: Fri, 19 Aug 2022 11:11:02 -0700	[thread overview]
Message-ID: <xmqqr11ckssp.fsf@gitster.g> (raw)
In-Reply-To: <55n449n3-71r9-28n9-094q-6r61545r7505@tzk.qr> (Johannes Schindelin's message of "Fri, 19 Aug 2022 15:05:46 +0200 (CEST)")

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

> This patch does that:
>
> -- snip --
> diff --git a/object-name.c b/object-name.c
> index 4d2746574cd..a2732be3b71 100644
> --- a/object-name.c
> +++ b/object-name.c
> @@ -1616,6 +1616,20 @@ int repo_interpret_branch_name(struct repository *r,
>  	if (!namelen)
>  		namelen = strlen(name);
>
> +	if (namelen == 1 && *name == '-') {
> +		struct grab_nth_branch_switch_cbdata cb = {
> +			.remaining = 1,
> +			.sb = buf
> +		};
> +
> +		if (refs_for_each_reflog_ent_reverse(get_main_ref_store(r),
> +						     "HEAD",
> +						     grab_nth_branch_switch,
> +						     &cb) <= 0)
> +			return -1;
> +		return namelen;
> +	}
> +

This is very reasonable.  

Anywhere we take '@{-1}', 'main', or 'js/dash-is-previous', nobody
would be surprised if we take '-' and interpreted as '@{-1}' in
addition.

However, as I said earlier, we have command line disambiguation that
wants to tell dashed options, revs, and paths apart.  We need to
find places that need adjusting and adjust them, *AND* then make
sure that such tweaks do not introduce unintended side effect.
These, especially the last one, take a careful work I would rather
not to see unexperienced developer perform alone and take the
finding by them blindly.

> What does not work with this patch is `git show -`. I am not sure whether
> we want to make that work, although I have to admit that I would use it.
> Often. And this patch would make it work, the test suite even passes with
> it:

Exactly my above point.  Nobody including our tests expect that a
single '-' to be taken as a rev when we disambiguate command line
arguments, so it is very unlikely that it is tested to ensure that a
single '-' ends the revs and is checked for its "path-ness".  It is
not surprising that the tests do not fail ;-).

> -- snip --
> diff --git a/revision.c b/revision.c
> index f4eee11cc8b..207b554aef1 100644
> --- a/revision.c
> +++ b/revision.c
> @@ -2802,7 +2802,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s
>  		revarg_opt |= REVARG_CANNOT_BE_FILENAME;
>  	for (left = i = 1; i < argc; i++) {
>  		const char *arg = argv[i];
> -		if (!seen_end_of_options && *arg == '-') {
> +		if (!seen_end_of_options && *arg == '-' && arg[1]) {
>  			int opts;
>
>  			opts = handle_revision_pseudo_opt(
> -- snap --

Thanks.  These two patch snippets in the message I am responding to
are promising and exciting.

  reply	other threads:[~2022-08-19 18:15 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-07 22:22 [PATCH] branch: allow "-" as a short-hand for "previous branch" Rubén Justo via GitGitGadget
2022-08-08 13:26 ` Johannes Schindelin
2022-08-08 16:06   ` Junio C Hamano
2022-08-13  9:19     ` Rubén Justo
2022-08-13 22:28       ` Junio C Hamano
2022-08-16  9:49     ` Johannes Schindelin
2022-08-19 13:05       ` Johannes Schindelin
2022-08-19 18:11         ` Junio C Hamano [this message]
2022-08-25  7:57         ` Rubén Justo
2022-08-25 16:23           ` Junio C Hamano
2022-08-25 19:50             ` Rubén Justo
2022-08-13  9:08   ` Rubén Justo
2022-08-08 14:46 ` Junio C Hamano
2022-08-13  9:14   ` Rubén Justo
2022-08-16  9:31     ` Johannes Schindelin
2022-08-16 17:03       ` Rubén Justo
2022-08-19 11:42         ` Johannes Schindelin
2022-08-16 17:11 ` [PATCH v2] allow "-" as short-hand for "@{-1}" in "branch -d" Rubén Justo via GitGitGadget
2022-08-16 18:55   ` Junio C Hamano
2022-08-16 21:27     ` Rubén Justo
2022-08-16 21:18 ` [PATCH v3] branch: allow "-" as a short-hand for "previous branch" Rubén Justo
2022-09-11 14:14 ` [PATCH v4] branch: allow "-" as a shortcut " Rubén Justo
2022-09-12 17:52   ` Junio C Hamano
2022-09-12 21:18     ` Rubén Justo

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=xmqqr11ckssp.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=rjusto@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.