Ramkumar Ramachandra <artagnon@xxxxxxxxx> writes: > Setting push.default to current adds the refspec "HEAD" for the > transport layer to handle. If "HEAD" doesn't resolve to a branch (and > since no refspec rhs is specified), the push fails after some time with > a cryptic error message: > > $ git push > error: unable to push to unqualified destination: HEAD > The destination refspec neither matches an existing ref on the remote nor > begins with refs/, and we are unable to guess a prefix based on the source ref. > error: failed to push some refs to 'git@xxxxxxxxxx:artagnon/git' > > Fail early with a nicer error message: > > $ git push > fatal: You are not currently on a branch. > To push the history leading to the current (detached HEAD) > state now, use > > git push ram HEAD:<name-of-remote-branch> > > Just like in the upstream and simple cases. > > Signed-off-by: Ramkumar Ramachandra <artagnon@xxxxxxxxx> > --- > builtin/push.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/builtin/push.c b/builtin/push.c > index ef3aa97..a79038c 100644 > --- a/builtin/push.c > +++ b/builtin/push.c > @@ -175,6 +175,8 @@ static void warn_unspecified_push_default_configuration(void) > > static void setup_default_push_refspecs(struct remote *remote) > { > + struct branch *branch = branch_get(NULL); > + > switch (push_default) { > default: > case PUSH_DEFAULT_UNSPECIFIED: > @@ -194,6 +196,8 @@ static void setup_default_push_refspecs(struct remote *remote) > break; > > case PUSH_DEFAULT_CURRENT: > + if (!branch) > + die(_(message_detached_head_die), remote->name); > add_refspec("HEAD"); > break; This means well, but I am not sure calling branch_get() for all other cases that do not care about the current branch is a right thing to do. It's not like you need branch variable to free some resource after done, or pass it around to callees from this function. Would it hurt to do if (!branch_get(NULL)) die(...); here, without the first hunk? -- 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