diff: refactor COLOR_DIFF from a flag into an int
[gitweb.git] / git-pull.sh
index c98c0fc32e1c4dd0ab2a5b84d63f63db651190c6..28441aca8ac1129dacad10d4bd040df64e34d134 100755 (executable)
@@ -9,7 +9,7 @@ LONG_USAGE='Fetch one or more remote refs and merge it/them into the current HEA
 SUBDIRECTORY_OK=Yes
 OPTIONS_SPEC=
 . git-sh-setup
-set_reflog_action "pull $*"
+set_reflog_action "pull${1+ $*}"
 require_work_tree
 cd_to_toplevel
 
@@ -53,6 +53,8 @@ do
                verbosity="$verbosity -v" ;;
        --progress)
                progress=--progress ;;
+       --no-progress)
+               progress=--no-progress ;;
        -n|--no-stat|--no-summary)
                diffstat=--no-stat ;;
        --stat|--summary)
@@ -108,6 +110,9 @@ do
        --recurse-submodules)
                recurse_submodules=--recurse-submodules
                ;;
+       --recurse-submodules=*)
+               recurse_submodules="$1"
+               ;;
        --no-recurse-submodules)
                recurse_submodules=--no-recurse-submodules
                ;;
@@ -163,34 +168,10 @@ error_on_no_merge_candidates () {
                echo "You asked to pull from the remote '$1', but did not specify"
                echo "a branch. Because this is not the default configured remote"
                echo "for your current branch, you must specify a branch on the command line."
-       elif [ -z "$curr_branch" ]; then
-               echo "You are not currently on a branch, so I cannot use any"
-               echo "'branch.<branchname>.merge' in your configuration file."
-               echo "Please specify which remote branch you want to use on the command"
-               echo "line and try again (e.g. 'git pull <repository> <refspec>')."
-               echo "See git-pull(1) for details."
-       elif [ -z "$upstream" ]; then
-               echo "You asked me to pull without telling me which branch you"
-               echo "want to $op_type $op_prep, and 'branch.${curr_branch}.merge' in"
-               echo "your configuration file does not tell me, either. Please"
-               echo "specify which branch you want to use on the command line and"
-               echo "try again (e.g. 'git pull <repository> <refspec>')."
-               echo "See git-pull(1) for details."
-               echo
-               echo "If you often $op_type $op_prep the same branch, you may want to"
-               echo "use something like the following in your configuration file:"
-               echo
-               echo "    [branch \"${curr_branch}\"]"
-               echo "    remote = <nickname>"
-               echo "    merge = <remote-ref>"
-               test rebase = "$op_type" &&
-                       echo "    rebase = true"
-               echo
-               echo "    [remote \"<nickname>\"]"
-               echo "    url = <url>"
-               echo "    fetch = <refspec>"
-               echo
-               echo "See git-config(1) for details."
+       elif [ -z "$curr_branch" -o -z "$upstream" ]; then
+               . git-parse-remote
+               error_on_missing_default_upstream "pull" $op_type $op_prep \
+                       "git pull <repository> <refspec>"
        else
                echo "Your configuration specifies to $op_type $op_prep the ref '${upstream#refs/heads/}'"
                echo "from the remote, but no such ref was fetched."
@@ -293,8 +274,8 @@ true)
        ;;
 *)
        eval="git-merge $diffstat $no_commit $squash $no_ff $ff_only"
-       eval="$eval  $log_arg $strategy_args $merge_args"
-       eval="$eval \"\$merge_name\" HEAD $merge_head $verbosity"
+       eval="$eval  $log_arg $strategy_args $merge_args $verbosity $progress"
+       eval="$eval \"\$merge_name\" HEAD $merge_head"
        ;;
 esac
 eval "exec $eval"