From: "Shawn O. Pearce" <spearce@spearce.org>
To: Junio C Hamano <junkio@cox.net>
Cc: "J. Bruce Fields" <bfields@fieldses.org>,
Jeff King <peff@peff.net>,
git@vger.kernel.org
Subject: Re: [PATCH] Detached HEAD (experimental)
Date: Tue, 9 Jan 2007 18:39:48 -0500 [thread overview]
Message-ID: <20070109233948.GC30023@spearce.org> (raw)
In-Reply-To: <7vy7obj07k.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano <junkio@cox.net> wrote:
> I do not want to think about the consequences of adding more
> cruft under .git/ directory. For example, should PREV be
> noticed by fsck and prune? What should various forms of
> 'git-reset' do with it? How does it interact with 'git-bisect'?
I agree. The reachability list for those is already starting to
get out of control, and the rules for making sure those files are
always in sync with every command is getting crazy. Didn't we just
fix `git reset --hard` to throw away .git/MERGE_MSG? That's been
a longstanding bug right there, and that's something that has been
in the tree for a loooooooong time.
> Being able to test merge or even make commits without being on a
> branch is vastly useful. It might or might not lead to anywhere
> even after you make a handful commits -- and I would imagine
> that it would be very handy to be able to be lazy and not having
> to decide if it is worth a new branch.
I agree. I'm always creating and deleting `foof` because I need
someplace to work real quick. Being able to work on a detached HEAD
would just slightly streamline the process, especially given that
`git checkout -b a-real-name` is readily available to move that
detached HEAD state into a real branch and continue on with it.
> If Carl wants to do a patch to teach
> 'git-commit' (and all other things that can create commits) not
> to do things from working in a detached HEAD
My concern here is to hit all of the corner cases. reset. bisect.
am. rebase. merge. cherry-pick/revert. Did I get all of 'em?
I'm not sure actually. ;-)
> It's tempting to forget about this whole "safety" business.
> Because we allow "reset --hard" and other forms of operations
> that can lose history if they were done while on a branch, only
> giving the safety to "git checkout" feels somewhat silly.
But isn't the --hard switch the safety valve here? And lets not
forget that reflogs are enabled by default now so even a `reset
--hard` on a real branch isn't a total loss (its only a loss for
uncommitted files in the working directory).
But a detached HEAD has no reflog. Which means operations that
update it in a non-fastforward way would orphan work. A subsequent
gc/prune/repack might destroy it, unless an existing ref contains
that previous commit.
> Which makes the "merge-base --check-ancestry" stuff I did last
> night pretty much unnecessary, but that's Ok. It will find
> other uses.
Pity. It looked like it was a good change and would be useful here
as a safety valve. Though based on what you said above I would
think we'd actually want it in both checkout and reset (--soft and
--hard versions).
--
Shawn.
next prev parent reply other threads:[~2007-01-09 23:39 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-01-02 7:45 [PATCH] Detached HEAD (experimental) Junio C Hamano
2007-01-02 19:59 ` Edgar Toernig
2007-01-02 21:56 ` Carl Worth
2007-01-02 22:18 ` Jakub Narebski
2007-01-03 0:34 ` Carl Worth
2007-01-06 18:58 ` J. Bruce Fields
2007-01-06 20:48 ` Alan Chandler
2007-01-06 22:52 ` J. Bruce Fields
2007-01-02 22:44 ` Junio C Hamano
2007-01-02 23:34 ` Carl Worth
2007-01-03 2:45 ` Junio C Hamano
2007-01-08 11:19 ` Junio C Hamano
2007-01-08 13:17 ` Jeff King
2007-01-09 0:19 ` Junio C Hamano
2007-01-09 0:43 ` Carl Worth
2007-01-09 1:05 ` Junio C Hamano
2007-01-09 1:15 ` Carl Worth
2007-01-09 3:26 ` Shawn O. Pearce
2007-01-09 7:07 ` Junio C Hamano
2007-01-09 10:41 ` [PATCH 0/6] Expose in_merge_bases() via merge-base Junio C Hamano
2007-01-09 8:12 ` [PATCH] Detached HEAD (experimental) Luben Tuikov
2007-01-09 14:21 ` Jeff King
2007-01-09 21:20 ` Junio C Hamano
2007-01-09 21:31 ` J. Bruce Fields
2007-01-09 21:43 ` Carl Worth
2007-01-09 21:53 ` J. Bruce Fields
2007-01-09 23:44 ` Shawn O. Pearce
2007-01-10 0:26 ` Jakub Narebski
2007-01-10 0:34 ` Shawn O. Pearce
2007-01-10 1:03 ` J. Bruce Fields
2007-01-10 1:07 ` Shawn O. Pearce
2007-01-10 1:15 ` Nicolas Pitre
2007-01-10 1:24 ` Junio C Hamano
2007-01-10 1:40 ` Shawn O. Pearce
2007-01-10 1:54 ` Nicolas Pitre
2007-01-10 2:28 ` Shawn O. Pearce
2007-01-10 1:37 ` Jakub Narebski
2007-01-10 9:08 ` Andreas Ericsson
2007-01-10 9:46 ` Junio C Hamano
2007-01-10 16:30 ` Daniel Barkalow
2007-01-11 9:45 ` Andreas Ericsson
2007-01-10 9:40 ` Junio C Hamano
2007-01-09 22:37 ` Junio C Hamano
2007-01-09 23:39 ` Shawn O. Pearce [this message]
2007-01-09 23:46 ` Linus Torvalds
2007-01-10 0:10 ` Junio C Hamano
2007-01-10 0:18 ` Shawn O. Pearce
2007-01-10 0:54 ` Linus Torvalds
2007-01-10 0:51 ` Carl Worth
2007-01-10 8:02 ` Junio C Hamano
2007-01-10 9:04 ` Andy Parkins
2007-01-10 9:05 ` Shawn O. Pearce
2007-01-10 9:33 ` Junio C Hamano
2007-01-10 10:10 ` Andy Parkins
2007-01-10 10:25 ` Shawn O. Pearce
2007-01-10 16:18 ` Junio C Hamano
2007-01-10 14:04 ` Jeff King
2007-01-11 0:34 ` Junio C Hamano
2007-01-11 4:31 ` J. Bruce Fields
2007-01-03 10:46 ` Jeff King
2007-01-03 11:59 ` Jeff King
2007-01-02 23:22 ` [PATCH] git-branch: show detached HEAD Lars Hjemli
2007-01-03 5:18 ` Shawn O. Pearce
2007-01-03 6:53 ` Junio C Hamano
2007-01-03 7:50 ` Lars Hjemli
2007-01-03 7:52 ` Junio C Hamano
2007-01-03 7:05 ` Junio C Hamano
2007-01-03 7:37 ` Lars Hjemli
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=20070109233948.GC30023@spearce.org \
--to=spearce@spearce.org \
--cc=bfields@fieldses.org \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=peff@peff.net \
/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.