On Tue, Nov 14, 2023 at 03:02:04PM +0000, Phillip Wood wrote: > Hi Ondra > > On 14/11/2023 12:40, Ondra Medek wrote: > > Hi Phillip, > > > > it does not work for a fresh clone of an empty repository > > > > git for-each-ref --format="%(upstream:short)" refs/heads/master > > > > outputs nothing, while > > Oh dear, that's a shame. I wonder if it is a bug because the documentation > says that > > --format="%(upstream:track)" > > should print "[gone]" whenever an unknown upstream ref is encountered but > trying that on a clone of an empty repository gives no output. I think it would print "gone" if the upstream branch went missing. But in this case the actual local branch is missing. And for-each-ref will not show an entry at all for a ref that does not exist. The "refs/heads/master" on your command line is not a ref, but a pattern, and that pattern does not match anything. So it's working as intended. I think a more direct tool would be: git rev-parse --symbolic-full-name master@{upstream} That convinces branch_get_upstream() to return the value we want, but sadly it seems to get lost somewhere in the resolution process, and we spit out an error. Arguably that is a bug (with --symbolic or --symbolic-full-name, I think it would be OK to resolve names even if they don't point to something, but it's possible that would have other unexpected side effects). -Peff