Re: run pgindent on a regular basis / scripted manner
Andres Freund <andres@anarazel.de>
Attachments
- v3-0001-Add-meson-targets-to-run-pgindent.patch (text/x-diff)
Hi, On 2023-10-18 12:15:51 -0700, Andres Freund wrote: > I still think that one of the more important things we ought to do is to make > it trivial to check if code is correctly indented and reindent it for the > user. I've posted a preliminary patch to add a 'indent-tree' target a few > months back, at > https://postgr.es/m/20230527184201.2zdorrijg2inqt6v%40alap3.anarazel.de > > I've updated that patch, now it has > - indent-tree, reindents the entire tree > - indent-head, which pgindent --commit=HEAD > - indent-check, fails if the tree isn't correctly indented > - indent-diff, like indent-check, but also shows the diff > > If we tought pgindent to emit the list of files it processes to a dependency > file, we could make it cheap to call indent-check repeatedly, by teaching > meson/ninja to not reinvoke it if the input files haven't changed. Personally > that'd make it more bearable to script indentation checks to happen > frequently. > > > I'll look into writing a command to update typedefs.list with all the local > changes. It turns out that updating the in-tree typedefs.list would be very noisy. On my local linux system I get 1 file changed, 422 insertions(+), 1 deletion(-) On a mac mini I get 1 file changed, 351 insertions(+), 1 deletion(-) We could possibly address that by updating the in-tree typedefs.list a bit more aggressively. Sure looks like the source systems are on the older side. But in the attached patch I've implemented this slightly differently. If the tooling to do so is available, the indent-* targets explained above, use/depend on src/tools/pgindent/typedefs.list.merged (in the build dir), which is the combination of a src/tools/pgindent/typedefs.list.local generated for the local binaries/libraries and the source tree src/tools/pgindent/typedefs.list. src/tools/pgindent/typedefs.list.local is generated in fragments, with one fragment for each build target. That way the whole file doesn't have to be regenerated all the time, which can save a good bit of time (althoug obviously less when hacking on the backend). This makes it quite quick to locally indent, without needing to manually fiddle around with manually modifying typedefs.list or using a separate typedefs.list. In a third commit I added a 'nitpick' configure time option, defaulting to off, which runs an indentation check. The failure mode of that currently isn't very helpful though, as it just uses --silent-diff. All of this currently is meson only, largely because I don't feel like spending the time messing with the configure build, particularly before there is any agreement on this being the thing to do. Greetings, Andres Freund
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix comment from commit 22655aa231.
- 01529c704008 17.0 cited
-
Add a few recent commits to .git-blame-ignore-revs.
- 0df7d1da40e3 17.0 landed
-
Pre-beta2 mechanical code beautification.
- b334612b8aee 16.0 landed
-
Pre-beta mechanical code beautification.
- 0245f8db36f3 16.0 landed
-
Make agreed-on updates in perltidy options.
- df6b19fbbc20 16.0 landed
-
Remove obsolete pgindent options --code-base and --build
- b16259b3c189 16.0 landed
-
Integrate pg_bsd_indent into our build/test infrastructure.
- 156c049beed9 16.0 landed
-
Sync pg_bsd_indent's copyright notices with Postgres practice.
- b44e5fced3e5 16.0 landed
-
Import pg_bsd_indent sources.
- 4e831f4cee14 16.0 landed
-
pgindent: filter files for the --commit option
- dab07e8c6896 16.0 landed
-
pgindent: more ways to find files to indent
- 068a243b7771 16.0 landed
-
Fix pgindent --show-diff option.
- 62e1e28bf769 16.0 cited
-
Add non-destructive modes to pgindent
- b90f0b57474e 16.0 landed
-
Initial pgindent run with pg_bsd_indent version 2.0.
- e3860ffa4dd0 10.0 cited