X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/97f0421523521ad2e0ff7b14eb38b854a0b9e0a0..4da9fcd41d30e8a089a0d64f5e6c44e80531942a:/support/patch-update diff --git a/support/patch-update b/support/patch-update index c4289820..7c51e9c2 100755 --- a/support/patch-update +++ b/support/patch-update @@ -7,21 +7,36 @@ use strict; -die "No 'patches' directory present in the current dir.\n" unless -d 'patches'; +my $patches_dir = 'patches'; +my $incl_generated_files; + +if (@ARGV && $ARGV[0] =~ /^--gen(?:=(\S+))?$/) { + $patches_dir = $1 if defined $1; + $incl_generated_files = 1; + shift; +} + +die "No '$patches_dir' directory was found.\n" unless -d $patches_dir; die "No '.git' directory present in the current dir.\n" unless -d '.git'; -open(IN, '<', 'prepare-source.mak') or die "Couldn't open prepare-source.mak: $!\n"; -$_ = join('', ); +my @extra_files; +open(IN, '<', 'Makefile.in') or die "Couldn't open Makefile.in: $!\n"; +while () { + if (s/^GENFILES=//) { + while (s/\\$//) { + $_ .= ; + } + @extra_files = split(' ', $_); + last; + } +} close IN; -my @extra_files = m{\n([^\s:]+):.*\n\t\S}g; -my $incl_generated_files = shift if @ARGV && $ARGV[0] eq '--gen'; - -system "git-checkout master" and exit 1; +system "git checkout master" and exit 1; if ($incl_generated_files) { die "'a' must not exist in the current directory.\n" if -e 'a'; die "'b' must not exist in the current directory.\n" if -e 'b'; - system "./prepare-source && rsync -a @extra_files a/" and exit 1; + system "./config.status Makefile && make gen && rsync -a @extra_files a/" and exit 1; } my $last_touch = time; @@ -32,9 +47,9 @@ if (@ARGV) { s{\.diff$} {}; push(@patches, $_); } - open(PIPE, '-|', 'git-branch', '-l') or die $!; + open(PIPE, '-|', 'git', 'branch', '-l') or die $!; } else { - open(PIPE, '-|', 'git-branch', '-a') or die $!; + open(PIPE, '-|', 'git', 'branch', '-a') or die $!; } while () { if (m# origin/patch/(.*)#) { @@ -48,14 +63,13 @@ close PIPE; my(%parent, %description); foreach my $patch (@patches) { my $branch = ($local_patch{$patch} ? '' : 'origin/') . "patch/$patch"; - open(PIPE, '-|', 'git-diff', "master...$branch", '--', "PATCH.$patch") or die $!; + my $desc = ''; + open(PIPE, '-|', 'git', 'diff', '-U1000', "master...$branch", '--', "PATCH.$patch") or die $!; while () { last if /^@@ /; } - my $desc = ''; while () { - next if /^-/; # huh?? - s/^.//; + next unless s/^[ +]//; if (m#patch -p1 ', "patches/$patch.diff") or die $!; + open(OUT, '>', "$patches_dir/$patch.diff") or die $!; print OUT $description{$patch}, "\n"; - if (system("git-rebase -m $parent") != 0) { - print qq|"git-rebase -m $parent" incomplete -- please fix.\n|; + if (system("git rebase -m $parent") != 0) { + print qq|"git rebase -m $parent" incomplete -- please fix.\n|; $ENV{PS1} = "[$parent] patch/$patch: "; system $ENV{SHELL} and exit 1; } if ($incl_generated_files) { - system "./prepare-source && rsync -a @extra_files b/" and exit 1; + system "./config.status Makefile && make gen && rsync -a @extra_files b/" and exit 1; } $last_touch = time; - open(PIPE, '-|', 'git-diff', $parent) or die $!; + open(PIPE, '-|', 'git', 'diff', $parent) or die $!; DIFF: while () { while (m{^diff --git a/PATCH}) { while () { @@ -126,6 +139,7 @@ sub update_patch } last DIFF if !defined $_; } + next if /^index /; print OUT $_; } close PIPE;