Re: run pgindent on a regular basis / scripted manner
От | Andres Freund |
---|---|
Тема | Re: run pgindent on a regular basis / scripted manner |
Дата | |
Msg-id | 20231019005635.cyyom2x45hn6sbtk@awork3.anarazel.de обсуждение исходный текст |
Ответ на | Re: run pgindent on a regular basis / scripted manner (Andres Freund <andres@anarazel.de>) |
Ответы |
Re: run pgindent on a regular basis / scripted manner
|
Список | pgsql-hackers |
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
Вложения
В списке pgsql-hackers по дате отправления: