Re: run pgindent on a regular basis / scripted manner
Noah Misch <noah@leadboat.com>
On Mon, Jan 30, 2023 at 03:42:09PM -0500, Bruce Momjian wrote: > On Sat, Jan 28, 2023 at 05:06:03PM -0800, Noah Misch wrote: > > On Tue, Jan 24, 2023 at 02:04:02PM -0500, Bruce Momjian wrote: > > > On Tue, Jan 24, 2023 at 09:54:57AM -0500, Tom Lane wrote: > > > > As another example, the mechanisms we use to create the typedefs list > > > > in the first place are pretty squishy/leaky: they depend on which > > > > buildfarm animals are running the typedef-generation step, and on > > > > whether anything's broken lately in that code --- which happens on > > > > a fairly regular basis (eg [1]). Maybe that could be improved, > > > > but I don't see an easy way to capture the set of system-defined > > > > typedefs that are in use on platforms other than your own. I > > > > definitely do not want to go over to hand maintenance of that list. > > > > > > As I now understand it, we would need to standardize on a typedef list > > > at the beginning of each major development cycle, and then only allow > > > additions, > > > > Not to my knowledge. There's no particular obstacle to updating the list more > > frequently or removing entries. > > We would need to re-pgindent the tree each time, I think, which would > cause disruption if we did it too frequently. More important than frequency is how much old code changes. A new typedef typically is an identifier not already appearing in the tree, so no old code changes. A removed typedef typically no longer appears in the tree, so again no old code changes. The tree can get those daily; they're harmless. The push that adds or removes FooTypedef from the source code is in the best position to react to any surprising indentation consequences of adding or removing FooTypedef from typedefs.list. (Reactions could include choosing a different typedef name or renaming incidental matches in older code.) Hence, changing typedefs.list as frequently as it affects the code is less disruptive than changing it once a year. The same applies to challenges like pgindent wrecking a non-"/*----------" comment. Such breakage is hard to miss when it's part of the push that crafts the comment; it's easier to miss in a bulk, end-of-cycle pgindent. Regarding the concern about a pre-receive hook blocking an emergency push, the hook could approve every push where a string like "pgindent: no" appears in a commit message within the push. You'd still want to make the tree clean sometime the same week or so. It's cheap to provide a break-glass like that.
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