#include "dir.h"
#include "refs.h"
#include "revision.h"
+#include "tempfile.h"
#include "lockfile.h"
enum rebase_type {
const char *remote = curr_branch ? curr_branch->remote_name : NULL;
if (*refspecs) {
- fprintf_ln(stderr, _("There are no candidates for merging among the refs that you just fetched."));
+ if (opt_rebase)
+ fprintf_ln(stderr, _("There is no candidate for rebasing against among the refs that you just fetched."));
+ else
+ fprintf_ln(stderr, _("There are no candidates for merging among the refs that you just fetched."));
fprintf_ln(stderr, _("Generally this means that you provided a wildcard refspec which had no\n"
"matches on the remote end."));
} else if (repo && curr_branch && (!remote || strcmp(repo, remote))) {
repo);
} else if (!curr_branch) {
fprintf_ln(stderr, _("You are not currently on a branch."));
- fprintf_ln(stderr, _("Please specify which branch you want to merge with."));
+ if (opt_rebase)
+ fprintf_ln(stderr, _("Please specify which branch you want to rebase against."));
+ else
+ fprintf_ln(stderr, _("Please specify which branch you want to merge with."));
fprintf_ln(stderr, _("See git-pull(1) for details."));
fprintf(stderr, "\n");
fprintf_ln(stderr, " git pull <remote> <branch>");
remote_name = "<remote>";
fprintf_ln(stderr, _("There is no tracking information for the current branch."));
- fprintf_ln(stderr, _("Please specify which branch you want to merge with."));
+ if (opt_rebase)
+ fprintf_ln(stderr, _("Please specify which branch you want to rebase against."));
+ else
+ fprintf_ln(stderr, _("Please specify which branch you want to merge with."));
fprintf_ln(stderr, _("See git-pull(1) for details."));
fprintf(stderr, "\n");
fprintf_ln(stderr, " git pull <remote> <branch>");
unsigned char orig_head[GIT_SHA1_RAWSZ], curr_head[GIT_SHA1_RAWSZ];
unsigned char rebase_fork_point[GIT_SHA1_RAWSZ];
- if (!getenv("_GIT_USE_BUILTIN_PULL")) {
- const char *path = mkpath("%s/git-pull", git_exec_path());
-
- if (sane_execvp(path, (char **)argv) < 0)
- die_errno("could not exec %s", path);
- }
-
if (!getenv("GIT_REFLOG_ACTION"))
set_reflog_message(argc, argv);
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);