This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
test.pl: extend EBCDIC functions to beyond 255
[perl5.git] / make_patchnum.pl
index 55acb92..03cb54a 100644 (file)
@@ -19,7 +19,7 @@ This program creates the files holding the information
 about locally applied patches to the source code. The created
 files are  C<git_version.h> and C<lib/Config_git.pl>.
 
-=item C<lib/Config_git.pl>
+=head2 C<lib/Config_git.pl>
 
 Contains status information from git in a form meant to be processed
 by the tied hash logic of Config.pm. It is actually optional,
@@ -93,7 +93,7 @@ sub backtick {
     my $command = shift;
     if (wantarray) {
         my @result= `$subcd $command`;
-        warn "$subcd $command: \$?=$?\n" if $?;
+        #warn "$subcd $command: \$?=$?\n" if $?;
         print "#> $subcd $command ->\n @result\n" if !$? and $opt_v;
         chomp @result;
         return @result;
@@ -122,9 +122,9 @@ sub write_files {
     return 0;
 }
 
-my $unpushed_commits = '/*no-op*/';
+my $unpushed_commits = '    ';
 my ($read, $branch, $snapshot_created, $commit_id, $describe)= ("") x 5;
-my ($changed, $extra_info, $commit_title, $new_patchnum, $status)= ("") x 5;
+my ($changed, $extra_info, $commit_title)= ("") x 3;
 
 if (my $patch_file= read_file(".patch")) {
     ($branch, $snapshot_created, $commit_id, $describe) = split /\s+/, $patch_file;
@@ -133,7 +133,7 @@ if (my $patch_file= read_file(".patch")) {
 }
 elsif (-d "$srcdir/.git") {
     # git branch | awk 'BEGIN{ORS=""} /\*/ { print $2 }'
-    ($branch) = map { /\* ([^(]\S*)/ ? $1 : () } backtick("git branch");
+    ($branch) = map { /\* ([^(]\S*)/ ? $1 : "" } backtick("git branch");
     my ($remote,$merge);
     if (length $branch) {
         $merge= backtick("git config branch.$branch.merge");
@@ -145,8 +145,14 @@ elsif (-d "$srcdir/.git") {
     $commit_id = backtick("git rev-parse HEAD");
     $describe = backtick("git describe");
     my $commit_created = backtick(qq{git log -1 --pretty="format:%ci"});
-    $new_patchnum = "describe: $describe";
     $extra_info = "git_commit_date='$commit_created'";
+    backtick("git diff --no-ext-diff --quiet --exit-code");
+    $changed = $?;
+    unless ($changed) {
+        backtick("git diff-index --cached --quiet HEAD --");
+        $changed = $?;
+    }
+
     if (length $branch && length $remote) {
         # git cherry $remote/$branch | awk 'BEGIN{ORS=","} /\+/ {print $2}' | sed -e 's/,$//'
         my $unpushed_commit_list =
@@ -165,12 +171,8 @@ git_remote_branch='$remote/$merge'
 git_unpushed='$unpushed_commit_list'";
         }
     }
-    if ($changed) { # not touched since init'd. never true.
-        $changed = 'true';
+    if ($changed) {
         $commit_title =  "Derived from:";
-        $status='"uncommitted-changes"'
-    } else {
-        $status='/*clean-working-directory-maybe*/'
     }
     $commit_title ||= "Commit id:";
 }
@@ -181,10 +183,10 @@ write_files(<<"EOF_HEADER", <<"EOF_CONFIG");
 * WARNING: 'git_version.h' is automatically generated by make_patchnum.pl
 *          DO NOT EDIT DIRECTLY - edit make_patchnum.pl instead
 ***************************************************************************/
-#define PERL_GIT_UNCOMMITTED_CHANGES $status
-#define PERL_PATCHNUM "$describe"
+@{[$describe ? "#define PERL_PATCHNUM \"$describe\"" : ()]}
 #define PERL_GIT_UNPUSHED_COMMITS\t\t\\
 $unpushed_commits/*leave-this-comment*/
+@{[$changed ? "#define PERL_GIT_UNCOMMITTED_CHANGES" : ()]}
 EOF_HEADER
 ######################################################################
 # WARNING: 'lib/Config_git.pl' is generated by make_patchnum.pl