Merge branch 'jk/push-simple' into maint
authorJunio C Hamano <gitster@pobox.com>
Mon, 22 Dec 2014 20:18:08 +0000 (12:18 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 22 Dec 2014 20:18:08 +0000 (12:18 -0800)
Git 2.0 was supposed to make the "simple" mode for the default of
"git push", but it didn't.

* jk/push-simple:
push: truly use "simple" as default, not "upstream"

1  2 
builtin/push.c
diff --combined builtin/push.c
index a076b1964d6ac0ca96496eda4e88fd23409299a9,5c3853b5546c03c2862c32b7b9f8f8caeaa3ff65..7aedf6f533690593a0ee0e438b3565daa73966f7
@@@ -127,10 -127,11 +127,10 @@@ static NORETURN int die_push_simple(str
         * them the big ugly fully qualified ref.
         */
        const char *advice_maybe = "";
 -      const char *short_upstream =
 -              skip_prefix(branch->merge[0]->src, "refs/heads/");
 +      const char *short_upstream = branch->merge[0]->src;
 +
 +      skip_prefix(short_upstream, "refs/heads/", &short_upstream);
  
 -      if (!short_upstream)
 -              short_upstream = branch->merge[0]->src;
        /*
         * Don't show advice for people who explicitly set
         * push.default.
@@@ -161,7 -162,7 +161,7 @@@ static const char message_detached_head
           "    git push %s HEAD:<name-of-remote-branch>\n");
  
  static void setup_push_upstream(struct remote *remote, struct branch *branch,
-                               int triangular)
+                               int triangular, int simple)
  {
        struct strbuf refspec = STRBUF_INIT;
  
                      "to update which remote branch."),
                    remote->name, branch->name);
  
-       if (push_default == PUSH_DEFAULT_SIMPLE) {
+       if (simple) {
                /* Additional safety */
                if (strcmp(branch->refname, branch->merge[0]->src))
                        die_push_simple(branch, remote);
@@@ -257,11 -258,11 +257,11 @@@ static void setup_default_push_refspecs
                if (triangular)
                        setup_push_current(remote, branch);
                else
-                       setup_push_upstream(remote, branch, triangular);
+                       setup_push_upstream(remote, branch, triangular, 1);
                break;
  
        case PUSH_DEFAULT_UPSTREAM:
-               setup_push_upstream(remote, branch, triangular);
+               setup_push_upstream(remote, branch, triangular, 0);
                break;
  
        case PUSH_DEFAULT_CURRENT:
@@@ -471,17 -472,6 +471,17 @@@ static int option_parse_recurse_submodu
        return 0;
  }
  
 +static int git_push_config(const char *k, const char *v, void *cb)
 +{
 +      struct wt_status *s = cb;
 +      int status;
 +
 +      status = git_gpg_config(k, v, NULL);
 +      if (status)
 +              return status;
 +      return git_default_config(k, v, s);
 +}
 +
  int cmd_push(int argc, const char **argv, const char *prefix)
  {
        int flags = 0;
                OPT_BIT(0, "no-verify", &flags, N_("bypass pre-push hook"), TRANSPORT_PUSH_NO_HOOK),
                OPT_BIT(0, "follow-tags", &flags, N_("push missing but relevant tags"),
                        TRANSPORT_PUSH_FOLLOW_TAGS),
 +              OPT_BIT(0, "signed", &flags, N_("GPG sign the push"), TRANSPORT_PUSH_CERT),
                OPT_END()
        };
  
        packet_trace_identity("push");
 -      git_config(git_default_config, NULL);
 +      git_config(git_push_config, NULL);
        argc = parse_options(argc, argv, prefix, options, push_usage, 0);
  
        if (deleterefs && (tags || (flags & (TRANSPORT_PUSH_ALL | TRANSPORT_PUSH_MIRROR))))