Code

Merge branch 'sp/maint-push-sideband' into sp/push-sideband
authorJunio C Hamano <gitster@pobox.com>
Wed, 10 Feb 2010 18:00:49 +0000 (10:00 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 10 Feb 2010 18:00:49 +0000 (10:00 -0800)
* sp/maint-push-sideband:
  receive-pack: Send internal errors over side-band #2
  t5401: Use a bare repository for the remote peer

Conflicts:
builtin-receive-pack.c
t/t5401-update-hooks.sh

1  2 
builtin-receive-pack.c

index b704fbd5b5a84d00d0fe28db145d869d77a4f320,a5543f9918c3150e1581108b770a4d4c281e812c..0559fcc871894548050e99c8c258561a0dcad5c9
@@@ -250,47 -286,59 +286,47 @@@ static int is_ref_checked_out(const cha
        return !strcmp(head_name, ref);
  }
  
 -static char *warn_unconfigured_deny_msg[] = {
 -      "Updating the currently checked out branch may cause confusion,",
 -      "as the index and work tree do not reflect changes that are in HEAD.",
 -      "As a result, you may see the changes you just pushed into it",
 -      "reverted when you run 'git diff' over there, and you may want",
 -      "to run 'git reset --hard' before starting to work to recover.",
 +static char *refuse_unconfigured_deny_msg[] = {
 +      "By default, updating the current branch in a non-bare repository",
 +      "is denied, because it will make the index and work tree inconsistent",
 +      "with what you pushed, and will require 'git reset --hard' to match",
 +      "the work tree to HEAD.",
        "",
        "You can set 'receive.denyCurrentBranch' configuration variable to",
 -      "'refuse' in the remote repository to forbid pushing into its",
 -      "current branch."
 +      "'ignore' or 'warn' in the remote repository to allow pushing into",
 +      "its current branch; however, this is not recommended unless you",
 +      "arranged to update its work tree to match what you pushed in some",
 +      "other way.",
        "",
 -      "To allow pushing into the current branch, you can set it to 'ignore';",
 -      "but this is not recommended unless you arranged to update its work",
 -      "tree to match what you pushed in some other way.",
 -      "",
 -      "To squelch this message, you can set it to 'warn'.",
 -      "",
 -      "Note that the default will change in a future version of git",
 -      "to refuse updating the current branch unless you have the",
 -      "configuration variable set to either 'ignore' or 'warn'."
 +      "To squelch this message and still keep the default behaviour, set",
 +      "'receive.denyCurrentBranch' configuration variable to 'refuse'."
  };
  
 -static void warn_unconfigured_deny(void)
 +static void refuse_unconfigured_deny(void)
  {
        int i;
 -      for (i = 0; i < ARRAY_SIZE(warn_unconfigured_deny_msg); i++)
 -              rp_warning("%s", warn_unconfigured_deny_msg[i]);
 +      for (i = 0; i < ARRAY_SIZE(refuse_unconfigured_deny_msg); i++)
-               error("%s", refuse_unconfigured_deny_msg[i]);
++              rp_error("%s", refuse_unconfigured_deny_msg[i]);
  }
  
 -static char *warn_unconfigured_deny_delete_current_msg[] = {
 -      "Deleting the current branch can cause confusion by making the next",
 -      "'git clone' not check out any file.",
 +static char *refuse_unconfigured_deny_delete_current_msg[] = {
 +      "By default, deleting the current branch is denied, because the next",
 +      "'git clone' won't result in any file checked out, causing confusion.",
        "",
        "You can set 'receive.denyDeleteCurrent' configuration variable to",
 -      "'refuse' in the remote repository to disallow deleting the current",
 -      "branch.",
 -      "",
 -      "You can set it to 'ignore' to allow such a delete without a warning.",
 +      "'warn' or 'ignore' in the remote repository to allow deleting the",
 +      "current branch, with or without a warning message.",
        "",
 -      "To make this warning message less loud, you can set it to 'warn'.",
 -      "",
 -      "Note that the default will change in a future version of git",
 -      "to refuse deleting the current branch unless you have the",
 -      "configuration variable set to either 'ignore' or 'warn'."
 +      "To squelch this message, you can set it to 'refuse'."
  };
  
 -static void warn_unconfigured_deny_delete_current(void)
 +static void refuse_unconfigured_deny_delete_current(void)
  {
        int i;
        for (i = 0;
 -           i < ARRAY_SIZE(warn_unconfigured_deny_delete_current_msg);
 +           i < ARRAY_SIZE(refuse_unconfigured_deny_delete_current_msg);
             i++)
-               error("%s", refuse_unconfigured_deny_delete_current_msg[i]);
 -              rp_warning("%s", warn_unconfigured_deny_delete_current_msg[i]);
++              rp_error("%s", refuse_unconfigured_deny_delete_current_msg[i]);
  }
  
  static const char *update(struct command *cmd)
                switch (deny_current_branch) {
                case DENY_IGNORE:
                        break;
 -              case DENY_UNCONFIGURED:
                case DENY_WARN:
-                       warning("updating the current branch");
+                       rp_warning("updating the current branch");
 -                      if (deny_current_branch == DENY_UNCONFIGURED)
 -                              warn_unconfigured_deny();
                        break;
                case DENY_REFUSE:
-                       error("refusing to update checked out branch: %s", name);
 +              case DENY_UNCONFIGURED:
+                       rp_error("refusing to update checked out branch: %s", name);
 +                      if (deny_current_branch == DENY_UNCONFIGURED)
 +                              refuse_unconfigured_deny();
                        return "branch is currently checked out";
                }
        }
                        case DENY_IGNORE:
                                break;
                        case DENY_WARN:
-                               warning("deleting the current branch");
 -                      case DENY_UNCONFIGURED:
 -                              if (deny_delete_current == DENY_UNCONFIGURED)
 -                                      warn_unconfigured_deny_delete_current();
+                               rp_warning("deleting the current branch");
                                break;
                        case DENY_REFUSE:
-                               error("refusing to delete the current branch: %s", name);
 +                      case DENY_UNCONFIGURED:
 +                              if (deny_delete_current == DENY_UNCONFIGURED)
 +                                      refuse_unconfigured_deny_delete_current();
+                               rp_error("refusing to delete the current branch: %s", name);
                                return "deletion of the current branch prohibited";
                        }
                }