diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-01-14 12:39:02 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-01-14 12:39:02 -0800 |
commit | 401a317aae36fd979da9eafbdd9415fa5ac6e119 (patch) | |
tree | 0ae841111da393a66958b531e2c6ab27c9fdf3b4 | |
parent | Merge branch 'rh/autoconf-rhel3' (diff) | |
parent | for-each-ref: always check stat_tracking_info()'s return value (diff) | |
download | tgif-401a317aae36fd979da9eafbdd9415fa5ac6e119.tar.xz |
Merge branch 'rc/for-each-ref-tracking'
* rc/for-each-ref-tracking:
for-each-ref: always check stat_tracking_info()'s return value
-rw-r--r-- | builtin/for-each-ref.c | 11 | ||||
-rwxr-xr-x | t/t6300-for-each-ref.sh | 13 |
2 files changed, 22 insertions, 2 deletions
diff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c index f3ce004d53..a0123f6146 100644 --- a/builtin/for-each-ref.c +++ b/builtin/for-each-ref.c @@ -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) diff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh index bda354c1c4..c66bf7981c 100755 --- a/t/t6300-for-each-ref.sh +++ b/t/t6300-for-each-ref.sh @@ -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 |