Re: [PATCH v2] checkout: implement "-" shortcut name for last branch
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Jan 15, 2009, 16:50 UTC
- Message-ID
- <alpine.DEB.1.00.0901151749350.3586@pacific.mpi-cbg.de>
- In-Reply-To
- <200901151732.57023.johan@herland.net>
Hi,
On Thu, 15 Jan 2009, Johan Herland wrote:
Show 29 quoted lines
> On Thursday 15 January 2009, Johannes Schindelin wrote: > > > On Thu, 15 Jan 2009, Johannes Sixt wrote: > > > Thomas Rast schrieb: > > > > Let git-checkout save the old branch as a symref in LAST_HEAD, > > > > and make 'git checkout -' switch back to LAST_HEAD, like 'cd -' > > > > does in the shell. > > > > > > /me likes this feature. > > > > > > git rebase (-i or not) calls checkout behind the scenes if the > > > two-argument form is used: > > > > > > git rebase [-i] master topic > > > > > > and 'topic' is not the current branch. You may want to add a test > > > that ensures that rebase sets LAST_HEAD in this case. > > > > > > You must make sure that commits referenced by LAST_HEAD are not > > > garbage-collected. (I don't know if this happens anyway for symrefs > > > in .git.) > > > > Note: if you used reflogs for that feature, the garbage collection > > could not have killed the commit. However, it is quite possible that > > the branch was deleted. > > I also like this feature, but as this is only a _convenience_ feature, I > would prefer if it didn't keep the previous branch/commit alive (if > otherwise unreachable).
You misread me: if the information is in HEAD's reflog, the _is_ reachable. From HEAD's reflog. And therefore, the objects will not be gc'ed (yet).
Show 7 quoted lines
> In any case, this new feature will _have_ to handle the case where there > simply is no previous branch/commit (e.g. after a git clone or git > init). > > I suggest that "git checkout -" looks at the reflog, and if there is no > previous entry in the reflog, or that entry is unreachable, then fail > in the same manner as "git checkout garbage"
Exactly my thinking.
Ciao, Dscho