Re: run pgindent on a regular basis / scripted manner

Andrew Dunstan <andrew@dunslane.net>

From: Andrew Dunstan <andrew@dunslane.net>
To: Jelte Fennema <postgres@jeltef.nl>, "shiy.fnst@fujitsu.com" <shiy.fnst@fujitsu.com>
Cc: Robert Haas <robertmhaas@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>, Justin Pryzby <pryzby@telsasoft.com>, Andres Freund <andres@anarazel.de>, Noah Misch <noah@leadboat.com>, Peter Geoghegan <pg@bowt.ie>, Bruce Momjian <bruce@momjian.us>, Magnus Hagander <magnus@hagander.net>, Alvaro Herrera <alvherre@2ndquadrant.com>, Stephen Frost <sfrost@snowman.net>, Jesse Zhang <sbjesse@gmail.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2023-02-12T14:16:25Z
Lists: pgsql-hackers
On 2023-02-10 Fr 10:21, Andrew Dunstan wrote:
>
>
> On 2023-02-10 Fr 04:25, Jelte Fennema wrote:
>> Ah yes, I had seen that when I read the initial --commit patch but
>> then forgot about it when the flag didn't work at all when I tried it.
>>
>> Attached is a patch that fixes the issue. And also implements the
>> --dirty and --staged flags in pgindent that Robert Haas requested.
>
>
>
> I don't think just adding a diff filter is really a sufficient fix. 
> The file might have been deleted since the commit(s) in question. 
> Here's a more general fix for missing files.
>

OK, I've pushed this along with a check to make sure we only process 
each file once.


I'm not sure how much more I really want to do here. Given the way 
pgindent now processes command line arguments, maybe the best thing is 
for people to use that. Use of git aliases can help. Something like 
these for example


[alias]

     dirty = diff --name-only --diff-filter=ACMU -- .
     staged = diff --name-only --cached --diff-filter=ACMU -- .
     dstaged = diff --name-only --diff-filter=ACMU HEAD -- .


and then you could do

     pgindent `git dirty`


The only danger would be if there were no dirty files. Maybe we need a 
switch to inhibit using the current directory if there are no command 
line files.


Thoughts?


cheers


andrew


--
Andrew Dunstan
EDB:https://www.enterprisedb.com

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix comment from commit 22655aa231.

  2. Add a few recent commits to .git-blame-ignore-revs.

  3. Pre-beta2 mechanical code beautification.

  4. Pre-beta mechanical code beautification.

  5. Make agreed-on updates in perltidy options.

  6. Remove obsolete pgindent options --code-base and --build

  7. Integrate pg_bsd_indent into our build/test infrastructure.

  8. Sync pg_bsd_indent's copyright notices with Postgres practice.

  9. Import pg_bsd_indent sources.

  10. pgindent: filter files for the --commit option

  11. pgindent: more ways to find files to indent

  12. Fix pgindent --show-diff option.

  13. Add non-destructive modes to pgindent

  14. Initial pgindent run with pg_bsd_indent version 2.0.