Merge branch 'fc/push-with-export-reporting-result'
authorJunio C Hamano <gitster@pobox.com>
Sun, 5 May 2013 18:12:12 +0000 (11:12 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sun, 5 May 2013 18:12:12 +0000 (11:12 -0700)
* fc/push-with-export-reporting-result:
transport-helper: improve push messages

1  2 
t/t5801-remote-helpers.sh
transport-helper.c
index 69212cdde14c012261eabc4ac9b2e5956213f8d5,214aa40ca4a6fde61ae2658bd2d5e134d594ba1a..dbb02e2afd16b2ca53f18107f5f07af37f217c9b
@@@ -6,7 -6,6 +6,7 @@@
  test_description='Test remote-helper import and export commands'
  
  . ./test-lib.sh
 +. "$TEST_DIRECTORY"/lib-gpg.sh
  
  if ! type "${BASH-bash}" >/dev/null 2>&1; then
        skip_all='skipping remote-testgit tests, bash not available'
@@@ -167,23 -166,18 +167,37 @@@ test_expect_success 'push ref with exis
        compare_refs local dup server dup
  '
  
 +test_expect_success GPG 'push signed tag' '
 +      (cd local &&
 +      git checkout master &&
 +      git tag -s -m signed-tag signed-tag &&
 +      git push origin signed-tag
 +      ) &&
 +      compare_refs local signed-tag^{} server signed-tag^{} &&
 +      test_must_fail compare_refs local signed-tag server signed-tag
 +'
 +
 +test_expect_success GPG 'push signed tag with signed-tags capability' '
 +      (cd local &&
 +      git checkout master &&
 +      git tag -s -m signed-tag signed-tag-2 &&
 +      GIT_REMOTE_TESTGIT_SIGNED_TAGS=1 git push origin signed-tag-2
 +      ) &&
 +      compare_refs local signed-tag-2 server signed-tag-2
 +'
 +
+ test_expect_success 'push messages' '
+       (cd local &&
+       git checkout -b new_branch master &&
+       echo new >>file &&
+       git commit -a -m new &&
+       git push origin new_branch &&
+       git fetch origin &&
+       echo new >>file &&
+       git commit -a -m new &&
+       git push origin new_branch 2> msg &&
+       ! grep "\[new branch\]" msg
+       )
+ '
  test_done
diff --combined transport-helper.c
index 5f8d075ed8c18b198e956bf10d6647598f565597,e561ec746855cc5c836fed02397ee8b90c1e0ae8..835815f61d7cfe12b32b13d92241830af858f8f4
@@@ -25,7 -25,6 +25,7 @@@ struct helper_data 
                option : 1,
                push : 1,
                connect : 1,
 +              signed_tags : 1,
                no_disconnect_req : 1;
        char *export_marks;
        char *import_marks;
@@@ -192,8 -191,6 +192,8 @@@ static struct child_process *get_helper
                        refspecs[refspec_nr++] = xstrdup(capname + strlen("refspec "));
                } else if (!strcmp(capname, "connect")) {
                        data->connect = 1;
 +              } else if (!strcmp(capname, "signed-tags")) {
 +                      data->signed_tags = 1;
                } else if (!prefixcmp(capname, "export-marks ")) {
                        struct strbuf arg = STRBUF_INIT;
                        strbuf_addstr(&arg, "--export-marks=");
@@@ -413,11 -410,9 +413,11 @@@ static int get_exporter(struct transpor
        /* we need to duplicate helper->in because we want to use it after
         * fastexport is done with it. */
        fastexport->out = dup(helper->in);
 -      fastexport->argv = xcalloc(5 + revlist_args->nr, sizeof(*fastexport->argv));
 +      fastexport->argv = xcalloc(6 + revlist_args->nr, sizeof(*fastexport->argv));
        fastexport->argv[argc++] = "fast-export";
        fastexport->argv[argc++] = "--use-done-feature";
 +      fastexport->argv[argc++] = data->signed_tags ?
 +              "--signed-tags=verbatim" : "--signed-tags=warn-strip";
        if (data->export_marks)
                fastexport->argv[argc++] = data->export_marks;
        if (data->import_marks)
@@@ -806,6 -801,7 +806,7 @@@ static int push_refs_with_export(struc
                if (private && !get_sha1(private, sha1)) {
                        strbuf_addf(&buf, "^%s", private);
                        string_list_append(&revlist_args, strbuf_detach(&buf, NULL));
+                       hashcpy(ref->old_sha1, sha1);
                }
                free(private);