From ba28acaa64c33d8a8afe12c91a76f5dd5b57483c Mon Sep 17 00:00:00 2001 From: Jelte Fennema-Nio Date: Tue, 3 Mar 2026 09:43:33 +0100 Subject: [PATCH v2 4/7] pgindent: Use git ls-files to discover files --- src/tools/pgindent/pgindent | 56 +++++++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 12 deletions(-) diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent index f8ac9c8268b..983fe0b1d4f 100755 --- a/src/tools/pgindent/pgindent +++ b/src/tools/pgindent/pgindent @@ -13,7 +13,6 @@ use strict; use warnings FATAL => 'all'; use Cwd qw(abs_path getcwd); -use File::Find; use File::Spec; use File::Temp; use IO::Handle; @@ -500,23 +499,56 @@ sub is_perl_file return $file_out =~ /:.*perl[0-9]*\b/i; } -my $wanted = sub { - my ($dev, $ino, $mode, $nlink, $uid, $gid); - (($dev, $ino, $mode, $nlink, $uid, $gid) = lstat($_)) - && -f _ - || return; - if ($do_c && is_c_file($File::Find::name)) +sub discover_files +{ + my @paths = @_; + my @discovered; + + # Separate individual files from directories + my @dirs; + foreach my $path (@paths) { - push(@files, $File::Find::name); + if (-f $path) + { + push(@discovered, $path); + } + elsif (-d $path) + { + push(@dirs, $path); + } + else + { + warn "Could not find $path"; + } } - elsif ($do_perl && is_perl_file($File::Find::name)) + + # Use git ls-files for directories to avoid searching build trees etc. + if (@dirs) { - push(@files, $File::Find::name); + my @git_files = `git ls-files -- @dirs`; + die "git ls-files error" if $?; + chomp(@git_files); + push(@discovered, @git_files); } -}; + + return @discovered; +} # any non-option arguments are files or directories to be processed -File::Find::find({ wanted => $wanted, no_chdir => 1 }, @ARGV) if @ARGV; +if (@ARGV) +{ + foreach my $f (discover_files(@ARGV)) + { + if ($do_c && is_c_file($f)) + { + push(@files, $f); + } + elsif ($do_perl && is_perl_file($f)) + { + push(@files, $f); + } + } +} # commit file locations are relative to the source root chdir "$sourcedir/../../.." if @commits && $sourcedir; -- 2.53.0