Merge branch 'rr/push-head'
"git push $there HEAD:branch" did not resolve HEAD early enough, so it was easy to flip it around while push is still going on and push out a branch that the user did not originally intended when the command was started. * rr/push-head: push: make push.default = current use resolved HEAD push: fail early with detached HEAD and current push: factor out the detached HEAD error message
This commit is contained in:
@ -113,17 +113,19 @@ static NORETURN int die_push_simple(struct branch *branch, struct remote *remote
|
|||||||
remote->name, branch->name, advice_maybe);
|
remote->name, branch->name, advice_maybe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char message_detached_head_die[] =
|
||||||
|
N_("You are not currently on a branch.\n"
|
||||||
|
"To push the history leading to the current (detached HEAD)\n"
|
||||||
|
"state now, use\n"
|
||||||
|
"\n"
|
||||||
|
" git push %s HEAD:<name-of-remote-branch>\n");
|
||||||
|
|
||||||
static void setup_push_upstream(struct remote *remote, int simple)
|
static void setup_push_upstream(struct remote *remote, int simple)
|
||||||
{
|
{
|
||||||
struct strbuf refspec = STRBUF_INIT;
|
struct strbuf refspec = STRBUF_INIT;
|
||||||
struct branch *branch = branch_get(NULL);
|
struct branch *branch = branch_get(NULL);
|
||||||
if (!branch)
|
if (!branch)
|
||||||
die(_("You are not currently on a branch.\n"
|
die(_(message_detached_head_die), remote->name);
|
||||||
"To push the history leading to the current (detached HEAD)\n"
|
|
||||||
"state now, use\n"
|
|
||||||
"\n"
|
|
||||||
" git push %s HEAD:<name-of-remote-branch>\n"),
|
|
||||||
remote->name);
|
|
||||||
if (!branch->merge_nr || !branch->merge || !branch->remote_name)
|
if (!branch->merge_nr || !branch->merge || !branch->remote_name)
|
||||||
die(_("The current branch %s has no upstream branch.\n"
|
die(_("The current branch %s has no upstream branch.\n"
|
||||||
"To push the current branch and set the remote as upstream, use\n"
|
"To push the current branch and set the remote as upstream, use\n"
|
||||||
@ -173,6 +175,8 @@ static void warn_unspecified_push_default_configuration(void)
|
|||||||
|
|
||||||
static void setup_default_push_refspecs(struct remote *remote)
|
static void setup_default_push_refspecs(struct remote *remote)
|
||||||
{
|
{
|
||||||
|
struct branch *branch;
|
||||||
|
|
||||||
switch (push_default) {
|
switch (push_default) {
|
||||||
default:
|
default:
|
||||||
case PUSH_DEFAULT_UNSPECIFIED:
|
case PUSH_DEFAULT_UNSPECIFIED:
|
||||||
@ -192,7 +196,10 @@ static void setup_default_push_refspecs(struct remote *remote)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case PUSH_DEFAULT_CURRENT:
|
case PUSH_DEFAULT_CURRENT:
|
||||||
add_refspec("HEAD");
|
branch = branch_get(NULL);
|
||||||
|
if (!branch)
|
||||||
|
die(_(message_detached_head_die), remote->name);
|
||||||
|
add_refspec(branch->name);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PUSH_DEFAULT_NOTHING:
|
case PUSH_DEFAULT_NOTHING:
|
||||||
|
Reference in New Issue
Block a user