I whipped up a pre-commit hook which automatically runs pgindent on the changed files in the commit. It won't add any changes automatically, but instead it fails the commit if it made any changes. That way you can add them manually if you want. Or if you don't, you can simply run git commit again without adding the changes. (or you can use the --no-verify flag of git commit to skip the hook completely)
It did require adding some extra flags to pgindent. While it only required the --staged-only and --fail-on-changed flags, the --changed-only flag was easy to add and seemed generally useful. I also attached a patch which adds the rules for formatting pgindent itself to the .editorconfig file. > Locally, I think pre-push would be better suited to > this than pre-commit (I often save WIP work in local branches, it'd be pretty > annoying if some indentation thing swore at me). I personally prefer pre-commit hooks, since then I don't have to go back and change some commit I made some time ago. And I think with the easy opt-out that this hook has it would work fine for my own workflow. But it shouldn't be hard to also include a pre-push hook too if you want that after all. Then people can choose to install the hook that they prefer. On Mon, 23 Jan 2023 at 02:38, Tom Lane <t...@sss.pgh.pa.us> wrote: > > Andres Freund <and...@anarazel.de> writes: > > On 2023-01-22 19:28:42 -0500, Tom Lane wrote: > >> Hmm ... right offhand, the only objection I can see is that the > >> pg_bsd_indent files use the BSD 4-clause license, which is not ours. > >> However, didn't UCB grant a blanket exception years ago that said > >> that people could treat that as the 3-clause license? > > > Yep: > > https://www.freebsd.org/copyright/license/ > > Cool. I'll take a look at doing this later (probably after the current > CF) unless somebody beats me to it. > > regards, tom lane
v1-0002-Add-pgindent-pre-commit-hook.patch
Description: Binary data
v1-0001-Add-pgindent-to-.editorconfig.patch
Description: Binary data