X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/f703fc96a75eab3db924e41a52531905784836de..a405530a0bdfb812498536bb46a01f9dcbe8b5d7:/make_patchnum.pl diff --git a/make_patchnum.pl b/make_patchnum.pl index 77d4a4e..df352cb 100644 --- a/make_patchnum.pl +++ b/make_patchnum.pl @@ -100,7 +100,7 @@ sub backtick { } else { my $result= `$subcd $command`; $result="" if ! defined $result; - warn "$subcd $command: \$?=$?\n" if $?; + #warn "$subcd $command: \$?=$?\n" if $?; print "#> $subcd $command ->\n $result\n" if !$? and $opt_v; chomp $result; return $result; @@ -126,11 +126,40 @@ my $unpushed_commits = ' '; my ($read, $branch, $snapshot_created, $commit_id, $describe)= ("") x 5; my ($changed, $extra_info, $commit_title)= ("") x 3; +my $git_patch_file; if (my $patch_file= read_file(".patch")) { ($branch, $snapshot_created, $commit_id, $describe) = split /\s+/, $patch_file; $extra_info = "git_snapshot_date='$snapshot_created'"; $commit_title = "Snapshot of:"; } +elsif ($git_patch_file = read_file(".git_patch") and $git_patch_file !~ /\A\$Format:%H/) { + chomp $git_patch_file; + ($commit_id, my $commit_date, my $names) + = split /\|/, $git_patch_file; + + my @names = split /,\s*/, $names; + + ($branch) = map m{^HEAD -> (.*)}, @names; + if (!$branch) { + ($branch) = map m{^(blead|maint/.*)}, @names; + } + if (!$branch) { + ($branch) = map m{^tag: (.*)}, @names; + $describe = $branch; + } + if (!$branch) { + my ($pr) = map m{^refs/pull/([0-9]+)/}, @names; + $branch = "pull-request-$pr"; + } + if (!$branch) { + $branch = $names[0] || $commit_id; + } + + $describe ||= $commit_id; + $extra_info = "git_commit_date='$commit_date'\n"; + $extra_info .= "git_snapshot_date='$commit_date'\n"; + $commit_title = "Snapshot of:"; +} elsif (-d "$srcdir/.git") { # git branch | awk 'BEGIN{ORS=""} /\*/ { print $2 }' ($branch) = map { /\* ([^(]\S*)/ ? $1 : () } backtick("git branch"); @@ -178,7 +207,7 @@ git_unpushed='$unpushed_commit_list'"; $commit_title ||= "Commit id:"; } -# we extract the filename out of the warning header, so dont mess with that +# we extract the filename out of the warning header, so don't mess with that write_files(<<"EOF_HEADER", <<"EOF_CONFIG"); /************************************************************************** * WARNING: 'git_version.h' is automatically generated by make_patchnum.pl