From: Junio C Hamano <gitster@pobox.com>
To: Daniel Barkalow <barkalow@iabervon.org>
Cc: Gerrit Pape <pape@smarden.org>,
git@vger.kernel.org, Shawn Pearce <spearce@spearce.org>
Subject: Re: [PATCH] git-pull: warn if only fetching tags with the -t switch
Date: Fri, 28 Dec 2007 13:58:43 -0800 [thread overview]
Message-ID: <7v63yieb1o.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <alpine.LNX.1.00.0712281141450.13593@iabervon.org> (Daniel Barkalow's message of "Fri, 28 Dec 2007 12:32:43 -0500 (EST)")
Daniel Barkalow <barkalow@iabervon.org> writes:
> On the other hand, the command that's difficult with (1) is "get all of
> the latest tags, but not even the default other refs", and I don't think
> that's something that people actually want to do in general, so it should
> be fine to go with (1).
I agree. "Behave as if no --tags was given (so an explicit
refspec on the command line overrides configured ones, or no
explicit refspecs on the command line takes configured ones),
but do not auto-follow tags and fetch all tags as not-for-merge
entries" would be the most sensible semantics for the option, as
you say.
>> This is a bit more involved change than I would want to have
>> during -rc freeze.
>
> Certainly. I think, though, that the OP's patch, plus a check that --tags
> was given on the command line in the first place, would be worthwhile.
Sounds sensible.
---
git-pull.sh | 66 +++++++++++++++++++++++++++++++++++-----------------------
1 files changed, 40 insertions(+), 26 deletions(-)
diff --git a/git-pull.sh b/git-pull.sh
index 698e82b..fa97b0f 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -72,6 +72,40 @@ do
shift
done
+error_on_no_merge_candidates () {
+ exec >&2
+ for opt
+ do
+ case "$opt" in
+ -t|--t|--ta|--tag|--tags)
+ echo "Fetching tags only, you probably meant:"
+ echo " git fetch --tags"
+ exit 1
+ esac
+ done
+
+ curr_branch=${curr_branch#refs/heads/}
+
+ echo "You asked me to pull without telling me which branch you"
+ echo "want to merge with, and 'branch.${curr_branch}.merge' in"
+ echo "your configuration file does not tell me either. Please"
+ echo "name which branch you want to merge on the command line and"
+ echo "try again (e.g. 'git pull <repository> <refspec>')."
+ echo "See git-pull(1) for details on the refspec."
+ echo
+ echo "If you often merge with the same branch, you may want to"
+ echo "configure the following variables in your configuration"
+ echo "file:"
+ echo
+ echo " branch.${curr_branch}.remote = <nickname>"
+ echo " branch.${curr_branch}.merge = <remote-ref>"
+ echo " remote.<nickname>.url = <url>"
+ echo " remote.<nickname>.fetch = <refspec>"
+ echo
+ echo "See git-config(1) for details."
+ exit 1
+}
+
orig_head=$(git rev-parse --verify HEAD 2>/dev/null)
git-fetch --update-head-ok "$@" || exit 1
@@ -105,33 +139,13 @@ merge_head=$(sed -e '/ not-for-merge /d' \
case "$merge_head" in
'')
case $? in
- 0) ;;
- 1) echo >&2 "You are not currently on a branch; you must explicitly"
- echo >&2 "specify which branch you wish to merge:"
- echo >&2 " git pull <remote> <branch>"
- exit 1;;
- *) exit $?;;
+ 0) error_on_no_merge_candidates "$@";;
+ 1) echo >&2 "You are not currently on a branch; you must explicitly"
+ echo >&2 "specify which branch you wish to merge:"
+ echo >&2 " git pull <remote> <branch>"
+ exit 1;;
+ *) exit $?;;
esac
- curr_branch=${curr_branch#refs/heads/}
-
- echo >&2 "You asked me to pull without telling me which branch you"
- echo >&2 "want to merge with, and 'branch.${curr_branch}.merge' in"
- echo >&2 "your configuration file does not tell me either. Please"
- echo >&2 "name which branch you want to merge on the command line and"
- echo >&2 "try again (e.g. 'git pull <repository> <refspec>')."
- echo >&2 "See git-pull(1) for details on the refspec."
- echo >&2
- echo >&2 "If you often merge with the same branch, you may want to"
- echo >&2 "configure the following variables in your configuration"
- echo >&2 "file:"
- echo >&2
- echo >&2 " branch.${curr_branch}.remote = <nickname>"
- echo >&2 " branch.${curr_branch}.merge = <remote-ref>"
- echo >&2 " remote.<nickname>.url = <url>"
- echo >&2 " remote.<nickname>.fetch = <refspec>"
- echo >&2
- echo >&2 "See git-config(1) for details."
- exit 1
;;
?*' '?*)
if test -z "$orig_head"
prev parent reply other threads:[~2007-12-28 21:59 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-21 12:44 [PATCH] git-pull: don't complain about branch merge config if only fetching tags Gerrit Pape
2007-12-21 16:35 ` Junio C Hamano
2007-12-27 9:30 ` Gerrit Pape
2007-12-27 10:39 ` Junio C Hamano
2007-12-27 14:46 ` [PATCH] git-pull: warn if only fetching tags with the -t switch Gerrit Pape
2007-12-28 6:37 ` Junio C Hamano
2007-12-28 7:19 ` Junio C Hamano
2007-12-28 17:32 ` Daniel Barkalow
2007-12-28 21:58 ` Junio C Hamano [this message]
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=7v63yieb1o.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=barkalow@iabervon.org \
--cc=git@vger.kernel.org \
--cc=pape@smarden.org \
--cc=spearce@spearce.org \
/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 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).