Commit 62b339a5 added a warning for git-pull to notify the user when they have not configured the setting 'branch.<n>.merge' (where <n> 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.<n>.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 <spearce@xxxxxxxxxxx> --- 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 ;; ?*' '?*) -- 1.4.4.2.g32194-dirty - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html