git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [RFC/PATCH] branch: name detached HEAD analogous to status

From
Marc Branchaud <marcnarc@xiplink.com>
Date
Feb 23, 2015, 15:21 UTC
Message-ID
<54EB4579.3000103@xiplink.com>
In-Reply-To
<xmqqa905wy43.fsf@gitster.dls.corp.google.com>
On 15-02-22 02:21 PM, Junio C Hamano wrote:
Show 46 quoted lines
> Michael J Gruber <git@drmicha.warpmail.net> writes:
> 
>> "git status" carefully names a detached HEAD "at" resp. "from" a rev or
>> ref depending on whether the detached HEAD has moved since. "git branch"
>> always uses "from", which can be confusing, because a status-aware user
>> would interpret this as moved detached HEAD.
>>
>> Make "git branch" use the same logic and wording.
> 
> Yeah, otherwise the user would wonder why sometimes the object name
> after that "from" matches "git rev-parse HEAD" and sometimes does
> not.
> 
> In order to make sure that it will be easy for us to maintain that
> these two commands will keep using the same logic and wording after
> this "fix" is applied, should this patch do a bit more?  Or is it
> worth doing that for such a small piece of code to be shared?
> 
> The following is a tangent and I do not think it is likely we would
> do anything about it, but I wonder what value we give the end users
> by showing the "from" information, both in "status" and "branch" in
> the first place.  When I am on a detached HEAD, I'd be doing one of
> these three things:
> 
>  (1) I am on some kind of sequencing machinery (e.g. "rebase -i",
>      "cherry-pick A..B", or "bisect").  It does not matter to me at
>      all if I am at the same commit at which I started the sequenced
>      operations or the sequencing machinery has moved me one or more
>      commits along its planned course of action, or where the
>      original point the sequencing machinery detached the HEAD at.
>      I suspect that I would not use "git status" or "git branch" in
>      this mode anyway.
> 
>  (2) I am sight-seeing, starting with e.g. "git checkout v2.0.0",
>      and moving around with "git checkout $some_other_commit".  I'd
>      always see that I am "at" the commit I last checked out, so the
>      distinctions would not be even shown to me.
> 
>  (3) I am experimenting to fix or enhance an existing thing that is
>      meant to eventually hit a concrete branch, but I do not know if
>      the experiment would pan out. "git checkout $topic~$n" would be
>      to start from near the tip of that $topic ($n may often be 0
>      but not always) and then I would "git commit" my experiments.
>      When I assess my progress, I'd be interested in what I have
>      that is not in $topic and vice versa since I started that
>      experiment, so

I find it very useful, because I often work on HEADs detached from remote branches ("git checkout origin/foo"). If I'm sight-seeing, I like the reminder of which remote branch I checked out, especially because I often have several working tress going at the same time. I also often make trivial changes, like typo fixes, on such detached HEADs, and here too I appreciate the reminder of which remote branch I should push HEAD to.

		M.
Previous: Michael J GruberNext: Michael J Gruber
Message 4 of 11 in “branch: name detached HEAD analogous to status”
  1. branch: name detached HEAD analogous to statusMichael J Gruber, Feb 22, 2015
  2. Junio C HamanoFeb 22, 2015
  3. Michael J GruberFeb 23, 2015
  4. Marc BranchaudFeb 23, 2015
  5. 0/2 branch output for detached HEADMichael J Gruber, Mar 6, 2015
  6. 1/2 wt-status: refactor detached HEAD analysisMichael J Gruber, Mar 6, 2015
  7. 2/2 branch: name detached HEAD analogous to statusMichael J Gruber, Mar 6, 2015
  8. Junio C HamanoMar 6, 2015
  9. Marc BranchaudFeb 23, 2015
  10. Michael J GruberFeb 23, 2015
  11. Marc BranchaudFeb 23, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.