aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--remote.c4
-rw-r--r--t/for-each-ref-tests.sh9
2 files changed, 12 insertions, 1 deletions
diff --git a/remote.c b/remote.c
index fc5894e949..041f9ceb52 100644
--- a/remote.c
+++ b/remote.c
@@ -1945,9 +1945,11 @@ static const char *branch_get_push_1(struct repository *repo,
cur = tracking_for_push_dest(remote, branch->refname, err);
if (!cur)
return NULL;
- if (strcmp(cur, up))
+ if (strcmp(cur, up)) {
+ free(cur);
return error_buf(err,
_("cannot resolve 'simple' push to a single destination"));
+ }
return cur;
}
}
diff --git a/t/for-each-ref-tests.sh b/t/for-each-ref-tests.sh
index e3ad19298a..02fb92e99e 100644
--- a/t/for-each-ref-tests.sh
+++ b/t/for-each-ref-tests.sh
@@ -1744,6 +1744,15 @@ test_expect_success ':remotename and :remoteref' '
)
'
+test_expect_success '%(push) with an invalid push-simple config' '
+ echo "refs/heads/main " >expect &&
+ git -c push.default=simple \
+ -c remote.pushdefault=myfork \
+ for-each-ref \
+ --format="%(refname) %(push)" refs/heads/main >actual &&
+ test_cmp expect actual
+'
+
test_expect_success "${git_for_each_ref} --ignore-case ignores case" '
${git_for_each_ref} --format="%(refname)" refs/heads/MAIN >actual &&
test_must_be_empty actual &&