Merge branch 'kn/for-each-branch'
[gitweb.git] / builtin / pull.c
index 4f14a69884871cda46b5c753a246fff9c87538b5..bf3fd3f9c8d80ff84ace4150214118355585e917 100644 (file)
@@ -15,6 +15,7 @@
 #include "dir.h"
 #include "refs.h"
 #include "revision.h"
+#include "tempfile.h"
 #include "lockfile.h"
 
 enum rebase_type {
@@ -111,7 +112,7 @@ static struct option pull_options[] = {
        /* Options passed to git-merge or git-rebase */
        OPT_GROUP(N_("Options related to merging")),
        { OPTION_CALLBACK, 'r', "rebase", &opt_rebase,
-         N_("false|true|preserve"),
+         "false|true|preserve",
          N_("incorporate changes by rebasing rather than merging"),
          PARSE_OPT_OPTARG, parse_opt_rebase },
        OPT_PASSTHRU('n', NULL, &opt_diffstat, NULL,
@@ -823,10 +824,14 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
                hashclr(orig_head);
 
        if (opt_rebase) {
+               int autostash = 0;
+
                if (is_null_sha1(orig_head) && !is_cache_unborn())
                        die(_("Updating an unborn branch with changes added to the index."));
 
-               die_on_unclean_work_tree(prefix);
+               git_config_get_bool("rebase.autostash", &autostash);
+               if (!autostash)
+                       die_on_unclean_work_tree(prefix);
 
                if (get_rebase_fork_point(rebase_fork_point, repo, *refspecs))
                        hashclr(rebase_fork_point);