git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] git-gui: give more advice when detaching HEAD
@ 2011-02-12  7:05 Jeff King
  2011-02-12  7:42 ` Junio C Hamano
  2011-02-13 12:31 ` Heiko Voigt
  0 siblings, 2 replies; 19+ messages in thread
From: Jeff King @ 2011-02-12  7:05 UTC (permalink / raw)
  To: Shawn O. Pearce; +Cc: git

The current advice is a little sparse and dates back to
d41b43e (git-gui: Refactor branch switch to support detached
head, 2007-07-08). In the meantime, command-line git grew
much more detailed advice for this situation, especially in
13be3e3 (Reword "detached HEAD" notification, 2010-01-29).

Let's use that more detailed advice here.

Signed-off-by: Jeff King <peff@peff.net>
---
I recently helped somebody who had detached HEAD via git-gui, made a
bunch of commits, switched to another branch, and then became confused
about where his work went.

After working through what happened with him, I think this is one place
where we could have prevented the problem. And given that we saw the
need for more advice in the CLI, I think this change is a no-brainer.

I also think we could have saved him by doing one or more of:

  1. Give some indication or warning during commit that you're in a
     detached state. The CLI template says "You are not on any branch"
     when editing the commit message, and mentions "detached HEAD" as
     the branch in the post-commit summary. As far as I can tell,
     git-gui says nothing at all.

  2. When leaving the detached state, notice that we have commits not
     contained in any other ref and pop up an "are you sure you want to
     lose these commits" dialog, with an option to create a branch. This
     is something we considered and rejected for the CLI, but I wonder
     if it makes more sense for git-gui.

  3. Make it easier to create a new branch from the checkout dialog.
     Obviously I can go to "Branch->Create" and make a new branch from a
     remote one. But if my mental model is "Checkout", then I pick a
     remote branch, we may want to present the user with the decision
     _then_ about detaching or creating. Something as simple as a "make
     local branch from remote" checkbox would help. Or perhaps the
     "you're going to a detached HEAD" dialog should actually have a
     button to create a local branch right then and there instead. I
     dunno.

All of those things are too far beyond my scope of caring about git-gui
and wanting to write tcl to actually implement myself. But I thought I
would share them as thoughts that came from a real confused-user
interaction. Feel free to ignore.

 lib/checkout_op.tcl |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/lib/checkout_op.tcl b/lib/checkout_op.tcl
index 9e7412c..9c95208 100644
--- a/lib/checkout_op.tcl
+++ b/lib/checkout_op.tcl
@@ -449,9 +449,16 @@ method _after_readtree {} {
 	}
 
 	if {$is_detached} {
-		info_popup [mc "You are no longer on a local branch.
-
-If you wanted to be on a branch, create one now starting from 'This Detached Checkout'."]
+		info_popup [mc \
+"You are no longer on a local branch. You can look
+around, make experimental changes and commit,
+and you can discard any commits you make in this
+state without impacting any branches by
+performing another checkout.
+
+If you want to create a new branch to retain
+commits you create, you may do so (now or later)
+by starting from 'This Detached Checkout'."]
 	}
 
 	# -- Run the post-checkout hook.
-- 
1.7.4

^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2011-02-17 23:13 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-12  7:05 [PATCH] git-gui: give more advice when detaching HEAD Jeff King
2011-02-12  7:42 ` Junio C Hamano
2011-02-12  8:04   ` Jeff King
2011-02-12  8:17     ` Junio C Hamano
2011-02-12  8:21       ` Jeff King
2011-02-17 23:13         ` Junio C Hamano
2011-02-12  8:42       ` Junio C Hamano
2011-02-13  0:05         ` Sverre Rabbelier
2011-02-13  9:22           ` Johannes Sixt
2011-02-13 23:10             ` Junio C Hamano
2011-02-13 12:31 ` Heiko Voigt
2011-02-15  6:39   ` Jeff King
2011-02-15 19:16     ` Heiko Voigt
2011-02-15 19:48       ` Pat Thoyts
2011-02-16  3:50         ` Jeff King
2011-02-17 17:38         ` Heiko Voigt
2011-02-16  3:46       ` Jeff King
2011-02-17 17:27         ` Heiko Voigt
     [not found]     ` <5828845.77740.1297797387140.JavaMail.trustmail@mail1.terreactive.ch>
2011-02-16 16:11       ` Victor Engmark

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 NNTP newsgroup(s).