COMMIT_MESSAGE

 1Make prepare-ChangeLog work with git-svn.
 2

WebKitTools/ChangeLog

 12007-05-15 Simon Hausmann <hausmann@kde.org>
 2
 3 Reviewed by NOBODY (OOPS!).
 4
 5 * Scripts/prepare-ChangeLog: Make it work with git checkouts, too.
 6
172007-05-15 Lars Knoll <lars@trolltech.com>
28
39 Reviewed by Zack

WebKitTools/Scripts/prepare-ChangeLog

@@sub get_function_line_ranges_for_c($$);
6565sub get_function_line_ranges_for_java($$);
6666sub method_decl_to_selector($);
6767sub processPaths(\@);
 68sub usingSvn();
 69sub usingGit();
6870
6971my $openChangeLogs = 0;
7072my $showHelp = 0;

@@my $DIFFOUT = new File::Temp(TEMPLATE => basename($0) . "-XXXXXXXX",
110112my $diffTempFile = $DIFFOUT->filename();
111113my @diffFiles;
112114
113 print STDERR " Running 'svn diff' to find changed, added, or removed files.\n";
114 open SVNDIFF, "$SVN diff --diff-cmd diff -x -N '" . join("' '", keys %paths) . "'|"
115  or die "The svn diff failed: $!.\n";
116 while (<SVNDIFF>) {
117  print $DIFFOUT $_;
118  if (/^Index: (.+)$/) {
119  push @diffFiles, $1;
 115if (usingSvn()) {
 116 print STDERR " Running 'svn diff' to find changed, added, or removed files.\n";
 117 open DIFFCMD, "$SVN diff --diff-cmd diff -x -N '" . join("' '", keys %paths) . "'|"
 118 or die "The svn diff failed: $!.\n";
 119 while (<DIFFCMD>) {
 120 print $DIFFOUT $_;
 121 if (/^Index: (.+)$/) {
 122 push @diffFiles, $1;
 123 }
 124 }
 125 close DIFFCMD;
 126} elsif (usingGit()) {
 127 print STDERR " Running 'git diff' to find changed, added, or removed files.\n";
 128 open DIFFCMD, "git diff HEAD -- '" . join("' '", keys %paths) . "'|"
 129 or die "The git diff failed: $!.\n";
 130 while (<DIFFCMD>) {
 131 print $DIFFOUT $_;
 132 }
 133 close DIFFCMD;
 134 open DIFFCMD, "git diff --name-only HEAD -- '" . join("' '", keys %paths) . "'|"
 135 or die "The git diff failed: $!.\n";
 136 while (<DIFFCMD>) {
 137 push @diffFiles, $_;
120138 }
 139 close DIFFCMD;
121140}
122 close SVNDIFF;
123141close $DIFFOUT;
124142
125143if (@diffFiles) {
126  my $diffFilesString = "'" . join ("' '", @diffFiles) . "'";
127  print STDERR " Running 'svn stat' on changed, added, or removed files.\n";
128  open SVNSTAT, "$SVN stat $diffFilesString 2> /dev/stdout |" or die "The svn stat failed: $!.\n";
129  while (<SVNSTAT>) {
130  if (/^([A-Z]).+\s+(.+)$/) {
131  my $status = $1;
132  my $file = $2;
133  if ($status eq "A" || $status eq "M") {
134  my @components = File::Spec->splitdir($file);
135  $changedLayoutTests = 1 if $components[0] eq "LayoutTests";
136  push @changed_files, $file if $components[$#components] ne "ChangeLog";
137  }
138  push @conflict_files, $file if $status eq "C";
139  $function_lists{$file} = $statusDescription{$status} if exists $statusDescription{$status};
140  } else {
141  print; # error output from svn stat
 144 if (usingSvn()) {
 145 my $diffFilesString = "'" . join ("' '", @diffFiles) . "'";
 146 print STDERR " Running 'svn stat' on changed, added, or removed files.\n";
 147 open SVNSTAT, "$SVN stat $diffFilesString 2> /dev/stdout |" or die "The svn stat failed: $!.\n";
 148 while (<SVNSTAT>) {
 149 if (/^([A-Z]).+\s+(.+)$/) {
 150 my $status = $1;
 151 my $file = $2;
 152 if ($status eq "A" || $status eq "M") {
 153 print("modified\n");
 154 my @components = File::Spec->splitdir($file);
 155 $changedLayoutTests = 1 if $components[0] eq "LayoutTests";
 156 push @changed_files, $file if $components[$#components] ne "ChangeLog";
 157 }
 158 push @conflict_files, $file if $status eq "C";
 159 $function_lists{$file} = $statusDescription{$status} if exists $statusDescription{$status};
 160 } else {
 161 print; # error output from svn stat
 162 }
142163 }
 164 close SVNSTAT;
 165 } elsif (usingGit()) {
 166 print STDERR " Running 'git diff --name-status' on changed, added, or removed files.\n";
 167 open DIFFPROC, "git diff --name-status HEAD -- '" . join("' '", keys %paths) . "'|";
 168 while (<DIFFPROC>) {
 169 print($_);
 170 if (/^([A-Z])\t(.+)$/) {
 171 my $status = $1;
 172 my $file = $2;
 173 if ($status eq "A" || $status eq "M") {
 174 my @components = File::Spec->splitdir($file);
 175 $changedLayoutTests = 1 if $components[0] eq "LayoutTests";
 176 push @changed_files, $file if $components[$#components] ne "ChangeLog";
 177 }
 178 push @conflict_files, $file if $status eq "C";
 179 $function_lists{$file} = $statusDescription{$status} if exists $statusDescription{$status};
 180 } else {
 181 print; # error output from svn stat
 182 }
 183 }
 184 close DIFFPROC;
143185 }
144  close SVNSTAT;
145186}
146187
147188if (!@diffFiles || !%function_lists) {

@@sub processPaths(\@)
888929
889930 return %result;
890931}
 932
 933sub usingSvn()
 934{
 935 return (-d ".svn");
 936}
 937
 938sub usingGit()
 939{
 940 return (system "git rev-parse --git-dir 2>/dev/null >/dev/null") == 0;
 941}
 942