Thread (35 messages) 35 messages, 8 authors, 2016-06-15

Re: [PATCH] checkout: implement "-" shortcut name for last branch

From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:45:57

Hi,

On Thu, 15 Jan 2009, Thomas Rast wrote:
Johannes Schindelin wrote:
quoted
There are a number of issues why I would like to avoid introducing 
LAST_HEAD:

- it does not work when you are using different Git versions on the same 
  repository,

- it does not work when you switched recently,
If you switch once, you'll be able to use the feature one checkout
later than if it was reflog-based.

If you switch a lot, the feature won't be in your git half the time
anyway.
But once it is, you could also have something like "git checkout -{5}" 
meaning the 5th last branch you were on.

No, I am not married to that syntax
quoted
- you are storing redundant information,
AFAIK it's the first instance of this data in a non-free-form field.
There's also the precedent of ORIG_HEAD.
See below.
quoted
- yes, the field is meant for user consumption, but no, it is not 
  free-form,
It's a field of almost arbitrary character data, filled by 70% of the
update-ref calls I can find in git.git in a "<tool>: <comment>" format
and by the rest with things such as "initial pull" or
"refs/remotes/git-svn: updating HEAD".  (The latter is so informative
that it probably deserves a fix.)  How is that not free-form?
That is not free-form, as the "<tool>:" is a hard convention all obey 
(and therefore, git checkout - only relies on _checkout_ not changing the 
format), and checkout is sufficiently plumbing that we will not change it 
all that lightly, certainly not when "git checkout -" depends on it.

So I think that those free-form concerns are totally unfounded.

Oh, and before you say that people could mess with GIT_REFLOG_ACTION, git 
checkout is no longer a script, and creates the message itself.  So we 
have full control over it.

They could edit the logs directly, but that applies to virtually the whole 
repository, and can safely be ignored as a lemming behavior.
quoted
- AFAICT your version could never be convinced to resurrect deleted 
  branches, without resorting to reflogs anyway.
Neither can any other use of git-checkout without the user manually
recovering some valid revspec referring to the old branch tip from the
reflog.
To the contrary.  The reflog has this information together with the 
message "moved from ...".
quoted
- the reflog method reflects pretty much exactly how people work around 
  the lack of "checkout -" currently, so why not just use the same proven 
  approach?
So you can make me fight an uphill battle against your idea how it
should be done.
If you can convince me that there are benefits from introducing yet 
another file in $GIT_DIR and duplicating information that is in the 
reflogs already, then no, it's not an uphill battle.

I mean, I _like_ the feature.  Otherwise I would not spend so much time 
suggesting what I think would be a method more in line with what we have 
already.

Ciao,
Dscho
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help