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 <tgl@sss.pgh.pa.us> wrote:
>
> Andres Freund <andres@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