git.postgresql.org Git - postgresql.git/commitdiff

git projects / postgresql.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 10a082b)
pgindent: filter files for the --commit option
2023年2月12日 13:43:44 +0000 (08:43 -0500)
2023年2月12日 13:51:01 +0000 (08:51 -0500)
per gripe from Shi Yu, solution from Jelte Fennema

Also add a check that the file exists, and issue a warning if it
doesn't.

As an efficiency measure, avoid processing any file more than once.

Discussion: https://postgr.es/m/TYAPR01MB6315B86619944D4A6B56842DFDDE9@TYAPR01MB6315.jpnprd01.prod.outlook.com


diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent
index 07970f758c2efb3bd244827314b133cbe2a97fed..a793971e078789448a7fa589a13198e795d112fb 100755 (executable)
--- a/src/tools/pgindent/pgindent
+++ b/src/tools/pgindent/pgindent
@@ -444,7 +444,7 @@ File::Find::find({wanted => $wanted}, @ARGV) if @ARGV;
foreach my $commit (@commits)
{
my $prev="$commit~";
- my @affected=`git diff-tree --no-commit-id --name-only -r $commit $prev`;
+ my @affected=`git diff --diff-filter=ACMR --name-only $prev $commit`;
die "git error" if $?;
chomp(@affected);
push(@files,@affected);
@@ -453,11 +453,23 @@ foreach my $commit (@commits)
# remove excluded files from the file list
process_exclude();
+my %processed;
+
foreach my $source_filename (@files)
{
+ # skip duplicates
+ next if $processed{$source_filename};
+ $processed{$source_filename} = 1;
+
# ignore anything that's not a .c or .h file
next unless $source_filename =~ /\.[ch]$/;
+ # don't try to indent a file that doesn't exist
+ unless (-f $source_filename)
+ {
+ warn "Could not find $source_filename";
+ next;
+ }
# Automatically ignore .c and .h files that correspond to a .y or .l
# file. indent tends to get badly confused by Bison/flex output,
# and there's no value in indenting derived files anyway.
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /