Merge branch 'rc/for-each-ref-tracking'
authorJunio C Hamano <gitster@pobox.com>
Wed, 14 Jan 2015 20:39:02 +0000 (12:39 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 14 Jan 2015 20:39:02 +0000 (12:39 -0800)
* rc/for-each-ref-tracking:
for-each-ref: always check stat_tracking_info()'s return value

builtin/for-each-ref.c
t/t6300-for-each-ref.sh
index f3ce004d53c55e3f53d6a90d21d2877368676f08..a0123f6146b53de295d01b438b72fb3dc7d76a0c 100644 (file)
@@ -717,7 +717,10 @@ static void populate_value(struct refinfo *ref)
                                 starts_with(name, "upstream")) {
                                char buf[40];
 
-                               stat_tracking_info(branch, &num_ours, &num_theirs);
+                               if (stat_tracking_info(branch, &num_ours,
+                                                      &num_theirs) != 1)
+                                       continue;
+
                                if (!num_ours && !num_theirs)
                                        v->s = "";
                                else if (!num_ours) {
@@ -735,7 +738,11 @@ static void populate_value(struct refinfo *ref)
                        } else if (!strcmp(formatp, "trackshort") &&
                                   starts_with(name, "upstream")) {
                                assert(branch);
-                               stat_tracking_info(branch, &num_ours, &num_theirs);
+
+                               if (stat_tracking_info(branch, &num_ours,
+                                                       &num_theirs) != 1)
+                                       continue;
+
                                if (!num_ours && !num_theirs)
                                        v->s = "=";
                                else if (!num_ours)
index bda354c1c48bce9fc6fdc442c3ec89fb034f20d3..c66bf7981c5328356005963e15262c8d870ac61c 100755 (executable)
@@ -334,6 +334,19 @@ test_expect_success 'Check that :track[short] cannot be used with other atoms' '
        test_must_fail git for-each-ref --format="%(refname:trackshort)" 2>/dev/null
 '
 
+test_expect_success 'Check that :track[short] works when upstream is invalid' '
+       cat >expected <<-\EOF &&
+
+
+       EOF
+       test_when_finished "git config branch.master.merge refs/heads/master" &&
+       git config branch.master.merge refs/heads/does-not-exist &&
+       git for-each-ref \
+               --format="%(upstream:track)$LF%(upstream:trackshort)" \
+               refs/heads >actual &&
+       test_cmp expected actual
+'
+
 cat >expected <<EOF
 $(git rev-parse --short HEAD)
 EOF