From: Philip Oakley Date: Fri, 09 Aug 2019 18:01:13 GMT Subject: Re: $> git branch splat response considered harmful Message-ID: <5f533351-3d77-3859-fe27-b3d96b0b8b30@iee.email> In-Reply-To: On 08/08/2019 22:28, Emily Shaffer wrote: > On Thu, Aug 8, 2019 at 2:20 PM Bryan Turner wrote: >> On Thu, Aug 8, 2019 at 2:08 PM wrote: >>> fwiw, >>> >>> jimc@frodo:~/prj-1/capnproto.git$ git branch -l >>> * master >>> >>> I find the splat in the response unhelpful >>> when wrapped in shell for loop, the splat expands into everything in >>> current directory >>> >>> jimc@frodo:~/prj-1/capnproto.git$ for b in `git branch -l`; do echo $b; done >>> appveyor.yml >>> c++ >>> CMakeLists.txt >>> CONTRIBUTORS >>> ... >>> >>> it would be nice if some flag combo would suppress that splat. >>> save me from fugly brittle sh $IFS fiddlery and incomplete workarounds >> Have you tried "git for-each-ref --format="%(refname:short)" >> refs/heads/"? That's going to provide short names for branches without >> any indicator for the default branch, and without any special >> ordering. > More generally, I think you should take a look at `git help git` and > check out the difference between "porcelain" and "plumbing" commands. > The former, of which `git branch` is one, are intended for interactive > use and not really meant for scripting or piping. You can usually come > up with an equivalent from the plumbing commands, which Bryan has > suggested for you with `git for-each-ref`. Git project tries very > hard to maintain output format of the plumbing commands so as to not > break folks' scripts, but such promises aren't usually made for > porcelain commands. > I think this (the broad Q&A) also suggests that the porcelain command documentation could be more helpful for pointing to the appropriate plumbing commands for these scripting issues (and it could reduce list noise..). -- Philip