Re: run pgindent on a regular basis / scripted manner
Tom Lane <tgl@sss.pgh.pa.us>
Jelte Fennema <postgres@jeltef.nl> writes: >> One issue on requiring patches to have run pgindent previously is >> actually the typedef list. If someone adds a typedef in a commit, they >> will see different pgident output in the committed files, and perhaps >> others, and the new typedefs might only appear after the commit, causing >> later commits to not match. > I'm not sure I understand the issue you're pointing out. If someone > changes the typedef list, imho they want the formatting to change > because of that. So requiring an addition to the typedef list to also > commit reindentation to all files that this typedef indirectly impacts > seems pretty reasonable to me. I think the issue Bruce is pointing out is that this is another mechanism whereby different people could get different indentation results. I fear any policy that is based on an assumption that indentation has One True Result is going to fail. As a concrete example, suppose Alice commits some code that uses "foo" as a variable name, and more or less concurrently, Bob commits something that defines "foo" as a typedef. Bob's change is likely to have side-effects on the formatting of Alice's code. If they're working in well-separated parts of the source tree, nobody is likely to notice that for awhile --- but whoever next touches the files Alice touched will be in for a surprise, which will be more or less painful depending on whether we've installed brittle processes. 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. I think we need to be content with a "soft", it's more-or-less-right approach to indentation. As I explained to somebody upthread, the main benefit of this for most people is avoiding the need for a massive once-a-year reindent run that causes merge failures for many pending patches. But we don't need to completely eliminate such runs to get 99.9% of that benefit; we only need to reduce the number of places they're likely to touch. regards, tom lane [1] https://github.com/PGBuildFarm/client-code/commit/dcca861554e90d6395c3c153317b0b0e3841f103
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