From: Junio C Hamano <gitster@pobox.com>
To: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Cc: Git mailing list <git@vger.kernel.org>
Subject: Re: [PATCH] docs: checking out using @{-N} can lead to detached state
Date: Mon, 20 Nov 2017 11:09:58 +0900 [thread overview]
Message-ID: <xmqqpo8dn1jd.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <20171119175411.13570-1-kaartic.sivaraam@gmail.com> (Kaartic Sivaraam's message of "Sun, 19 Nov 2017 23:24:11 +0530")
Kaartic Sivaraam <kaartic.sivaraam@gmail.com> writes:
> The commit message of 75d6e552a (Documentation: @{-N} can refer to
> a commit, 2014-01-19) clearly specifies how @{-N} can be used to
> refer not only to a branch but also to a commit. IOW, @{-N} is a
> syntax for the N-th last "checkout" and not the N-th last "branch"
If you define a new term "checkout" to mean "what was checked out",
yes that is correct. After re-reading the said commit and the text
it tried to update, I agree with you that it did not go far enough.
After the first paragraph explains what happens during "checkout
<branch>" and goes from the normal case where <branch> is really a
branch name to an arbitrary commit (where "detaching" needs to be
mentioned), a commit before 75d6e552a added mention of @{-N} and
made it appear as if it were a reference to a commit (i.e. not a
branch name) and that was why it said "As a special case" and
mentioned "detaching". The problem lies in a lot older one,
696acf45 ("checkout: implement "-" abbreviation, add docs and
tests", 2009-01-17).
I agree that a real fix should ensure that @{-N} is merely a
short-hand for what was checked out in the Nth-previous "git
checkout" operation, *and* regardless of which between a branch name
or a commit object name that Nth thing is, the previous rules we
already gave in the first paragraph apply---if the thing checked out
in the Nth-previous "git checkout" was a branch, we checkout the
branch. If it was a commit, we detach.
So perhaps we should start from dropping that "As a special case".
You can also use the `"@{-N}"` syntax to refer to the thing the N-th
last "git checkout" operation checked out; if it was a branch, that
branch is checked out, and otherwise the HEAD is detached at the
commit. You may also specify `-` which is synonymous to `"@{-1}"`.
or something like that. If we do so, we'd further need to tweak "As
a further special case", as this rewrite makes it clear that "@{-N}"
is not a special case at all (instead it is merely a different way
to spell <branch> or <commit> that is already covered).
Thanks.
> diff --git a/Documentation/git-checkout.txt b/Documentation/git-checkout.txt
> index e108b0f74..238880f10 100644
> --- a/Documentation/git-checkout.txt
> +++ b/Documentation/git-checkout.txt
> @@ -272,9 +272,8 @@ section of linkgit:git-add[1] to learn how to operate the `--patch` mode.
> commit, your HEAD becomes "detached" and you are no longer on
> any branch (see below for details).
> +
> -As a special case, the `"@{-N}"` syntax for the N-th last branch/commit
> -checks out branches (instead of detaching). You may also specify
> -`-` which is synonymous with `"@{-1}"`.
> +As a special case, the `@{-N}` syntax checks out the N-th last branch/commit(checkout).
> +You may also specify `-` which is synonymous with `@{-1}`.
> +
> As a further special case, you may use `"A...B"` as a shortcut for the
> merge base of `A` and `B` if there is exactly one merge base. You can
next prev parent reply other threads:[~2017-11-20 2:10 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-19 17:54 [PATCH] docs: checking out using @{-N} can lead to detached state Kaartic Sivaraam
2017-11-20 2:09 ` Junio C Hamano [this message]
2017-11-20 15:18 ` Kaartic Sivaraam
2017-11-27 17:28 ` [PATCH v2 1/2] Doc/checkout: " Kaartic Sivaraam
2017-11-27 17:28 ` [PATCH v2 2/2] Doc/check-ref-format: clarify information about @{-N} syntax Kaartic Sivaraam
2017-11-28 2:40 ` Junio C Hamano
2017-11-28 14:43 ` Kaartic Sivaraam
2017-12-03 1:52 ` Junio C Hamano
2017-12-04 17:25 ` Kaartic Sivaraam
2017-12-04 18:44 ` Junio C Hamano
2017-12-05 5:20 ` Kaartic Sivaraam
2017-11-28 16:34 ` [PATCH v3 " Kaartic Sivaraam
2017-12-03 2:08 ` Junio C Hamano
2017-12-06 17:58 ` Kaartic Sivaraam
2017-12-14 12:30 ` [PATCH v4 " Kaartic Sivaraam
2017-12-14 18:02 ` Junio C Hamano
2017-12-16 5:38 ` Kaartic Sivaraam
2017-12-16 8:13 ` [PATCH v5 0/1] clarify about @{-N} syntax in check-ref-format documentation Kaartic Sivaraam
2017-12-16 8:13 ` [PATCH v5 1/1] Doc/check-ref-format: clarify information about @{-N} syntax Kaartic Sivaraam
2017-11-28 2:33 ` [PATCH v2 1/2] Doc/checkout: checking out using @{-N} can lead to detached state 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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqpo8dn1jd.fsf@gitster.mtv.corp.google.com \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=kaartic.sivaraam@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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).