From: Shawn O. Pearce Date: Mon, 18 Dec 2006 09:12:06 GMT Subject: [PATCH] Only warn about missing branch..merge in pull. Message-ID: <20061218091206.GA11284@spearce.org> Commit 62b339a5 added a warning for git-pull to notify the user when they have not configured the setting 'branch..merge' (where is the current branch) and no arguments were given to git-pull to specify the branches to merge. Unfortunately this warning also appears in git-fetch when no arguments were supplied, as the warning is being output at the same time that the contents of FETCH_HEAD is being determined. This causes users who fetch into local tracking branches prior to merging to receive unexpected/unnecessary warnings: $ git fetch Warning: No merge candidate found because value of config option "branch.sp/topic.merge" does not match any remote branch fetched. This warning may also cause problems for other Porcelain that use git-fetch as "plumbing", as the other Porcelain may not actually use (or honor) the branch..merge configuration option. Instead we should delay the warning about no matching branches until we are actually in git-pull and are trying to setup the call to git-merge to actually carry out the merge. This way direct users of git-fetch do not receive these warnings. Signed-off-by: Shawn O. Pearce --- git-parse-remote.sh | 10 ---------- git-pull.sh | 16 +++++++++++++++- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/git-parse-remote.sh b/git-parse-remote.sh index f27c3c2..7a1cf5c 100755 --- a/git-parse-remote.sh +++ b/git-parse-remote.sh @@ -134,7 +134,6 @@ canon_refs_list_for_fetch () { # or the first one otherwise; add prefix . to the rest # to prevent the secondary branches to be merged by default. merge_branches= - found_mergeref= curr_branch= if test "$1" = "-d" then @@ -174,10 +173,6 @@ canon_refs_list_for_fetch () { dot_prefix= && break done fi - if test -z $dot_prefix - then - found_mergeref=true - fi case "$remote" in '') remote=HEAD ;; refs/heads/* | refs/tags/* | refs/remotes/*) ;; @@ -198,11 +193,6 @@ canon_refs_list_for_fetch () { fi echo "${dot_prefix}${force}${remote}:${local}" done - if test -z "$found_mergeref" -a "$curr_branch" - then - echo >&2 "Warning: No merge candidate found because value of config option - \"branch.${curr_branch}.merge\" does not match any remote branch fetched." - fi } # Returns list of src: (no store), or src:dst (store) diff --git a/git-pull.sh b/git-pull.sh index e23beb6..d43a565 100755 --- a/git-pull.sh +++ b/git-pull.sh @@ -76,7 +76,21 @@ merge_head=$(sed -e '/ not-for-merge /d' \ case "$merge_head" in '') - echo >&2 "No changes." + echo >&2 "warning: No branches were selected for merge." + if test $# = 0 + then + branch=$(git-symbolic-ref HEAD | sed -e 's|^refs/heads/||') + remote=$(git-repo-config --get-all "branch.$branch.remote") + if test -z "$remote" + then + echo >&2 "warning: (Config option 'branch.$branch.remote' not set.)" + fi + merge=$(git-repo-config --get-all "branch.$branch.merge") + if test -z "$merge" + then + echo >&2 "warning: (Config option 'branch.$branch.merge' not set.)" + fi + fi exit 0 ;; ?*' '?*) --