[PATCH] git-checkout: disable guides how to switch branches with ui.guide
- From
- Matthias Lederhofer <matled@gmx.net>
- Date
- Feb 1, 2007, 18:44 UTC
- Message-ID
- <20070201184403.GA6326@moooo.ath.cx>
- In-Reply-To
- <7vlkjip7mu.fsf_-_@assigned-by-dhcp.cox.net>
--- Junio C Hamano <junkio@cox.net> wrote:
Show 22 quoted lines
> * Detaching head would say which commit I am at and reminds me that > I am not on any branch (not that I would detach my HEAD while keeping > precious local changes around in any real-world workflow -- this is > just a sample session). > > [git.git (master)]$ git checkout master^ > M git-checkout.sh > Note: you are not on any branch and are at commit "master^" > If you want to create a new branch from this checkout, you may do so > (now or later) by using -b with the checkout command again. Example: > git checkout -b <new_branch_name> > > * Coming back to an attached state can lose the detached HEAD, so > I get warned and stopped. > > [git.git]$ git checkout master > You are not on any branch and switching to branch 'master' > may lose your changes. At this point, you can do one of two things: > (1) Decide it is Ok and say 'git checkout -f master'; > (2) Start a new branch from the current commit, by saying > 'git checkout -b <branch-name>'. > Leaving your HEAD detached; not switching to branch 'master'.
I think these two are too long, after a few times one knows exactly what to do and all this text is not necessary anymore.
Perhaps the name (ui.guide) should be different, I just did not find any category to put this in. The variable could become a general variable to enable/disable very verbose explanations what to do in a situation. --- git-checkout.sh | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/git-checkout.sh b/git-checkout.sh index deb4795..1eb8b06 100755 --- a/git-checkout.sh +++ b/git-checkout.sh @@ -5,6 +5,8 @@ SUBDIRECTORY_OK=Sometimes . git-sh-setup require_work_tree +guide=$(git repo-config --bool --get ui.guide) +[ -z "$guide" ] && guide=true old_name=HEAD old=$(git-rev-parse --verify $old_name 2>/dev/null) oldbranch=$(git-symbolic-ref $old_name 2>/dev/null) @@ -155,10 +157,13 @@ then detached="$new" if test -n "$oldbranch" then - detach_warn="Note: you are not on any branch and are at commit \"$new_name\" + detach_warn="Note: you are not on any branch and are at commit \"$new_name\"" + if test "$guide" = true; then + detach_warn="$detach_warn If you want to create a new branch from this checkout, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b <new_branch_name>" + fi fi elif test -z "$oldbranch" && test -n "$branch" then @@ -166,13 +171,18 @@ then if test -z "$force" then git show-ref -d -s | grep "$old" >/dev/null || { - echo >&2 \ + if test "$guide" = true; then + echo >&2 \ "You are not on any branch and switching to branch '$new_name' may lose your changes. At this point, you can do one of two things: (1) Decide it is Ok and say 'git checkout -f $new_name'; (2) Start a new branch from the current commit, by saying 'git checkout -b <branch-name>'. Leaving your HEAD detached; not switching to branch '$new_name'." + else + echo >&2 \ +"HEAD detached; use -f to switch to branch '$new_name'." + fi exit 1; } fi
-- 1.5.0.rc3.g4a88