On 4/25/2023 2:58 AM, Patrick Steinhardt wrote: > On Mon, Apr 24, 2023 at 02:17:31PM -0600, Felipe Contreras wrote: >> Patrick Steinhardt wrote: >>> Parsing the output of fetches is mostly impossible. It prettifies >>> reference names that are about to be updated, doesn't print the old and >>> new object IDs the refs are being updated from and to, and prints all of >>> that information in nice columns. In short, it is designed to be read by >>> humans rather than machines. >>> >>> This makes it hard to use in a script way though, e.g. to learn about >>> which references actually have been updated or which have not been >>> updated. This patch series intends to fix that by introducing a new >>> machine-parseable interface: >>> >>> ``` >>> $ git fetch --output-format=porcelain --no-progress >>> fff5a5e7f528b2ed2c335991399a766c2cf01103 af67688dca57999fd848f051eeea1d375ba546b2 refs/remotes/origin/master >>> * 0000000000000000000000000000000000000000 e046fe5a36a970bc14fbfbcb2074a48776f6b671 refs/remotes/origin/x86-rep-insns >>> * 0000000000000000000000000000000000000000 bb81ed6862b864c9eb99447f04d49a84ecb647e5 refs/tags/v6.3-rc4 >>> * 0000000000000000000000000000000000000000 83af7b1468c0dca86b4dc9e43e73bfa4f38d9637 refs/tags/v6.3-rc5 >>> * 0000000000000000000000000000000000000000 ab3affb8ed84f68638162fe7e6fd4055e15bff5b refs/tags/v6.3-rc6 >>> * 0000000000000000000000000000000000000000 1c8c28415e8743368a2b800520a6dd0b22ee6ec2 refs/tags/v6.3-rc7 >>> ``` >> >> Makes sense, my only question is what other format could `git fetch` have? I >> think `--format=porcelain` is clear enough. > > Yeah, I'd be perfectly happy to rename this to `--format=porcelain`. > I'll wait for the Review Club that discusses this patch set tomorrow and > will send a new version with that change afterwards if nobody disagrees. > > Patrick We had some discussion during review club about this, where the idea of using "--porcelain" came up because many commands use that when switching into a machine readable format. In addition, this format not only changes the output but also moves it from being on stderr to stdout, which is a hint that the intended usage of the command is now a little different. I don't have strong opinion here but want to note that "--format" is often used by commands like log which changes how we structure the output of git objects. Obviously using "--porcelain" is a bit weird when dealing with the pre-existing compact and full outputs, and perhaps --format wouldn't be confusing. I didn't find any command which used --output-format today, and all the uses of --format I saw were for object formatting like git log. I'm ok with --format, but wanted to note the potential confusion. git status also uses --porcelain and has a -z option for NUL terminating instead of newline terminating. We thought -z might be useful to handle the potential of weird refnames that include characters. No one on the review could remember what rules were enforced on refnames to confirm if it was legal to have '\n' in a refname or not.