Skip to content

Commit 098e711

Browse files
committed
"git-push $URL" without refspecs pushes only matching branches
When "git push" is run without any refspec (neither on the command line nor in the config), we used to push "matching refs" in the sense that anything under refs/ hierarchy that exist on both ends were updated. This used to be a sane default for publishing your repository to another back when we did not have refs/remotes/ hierarchy, but it does not make much sense these days. This changes the semantics to push only "matching branches". Signed-off-by: Junio C Hamano <[email protected]>
1 parent b941ffa commit 098e711

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

remote.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,13 @@ int match_refs(struct ref *src, struct ref *dst, struct ref ***dst_tail,
544544
if (!pat)
545545
continue;
546546
}
547+
else if (prefixcmp(src->name, "refs/heads/"))
548+
/*
549+
* "matching refs"; traditionally we pushed everything
550+
* including refs outside refs/heads/ hierarchy, but
551+
* that does not make much sense these days.
552+
*/
553+
continue;
547554

548555
if (pat) {
549556
const char *dst_side = pat->dst ? pat->dst : pat->src;

0 commit comments

Comments
 (0)