summaryrefslogtreecommitdiff
path: root/Porting/make_dot_patch.pl
diff options
context:
space:
mode:
authorYves Orton <demerphq@gemini.(none)>2009-07-27 22:10:55 +0200
committerYves Orton <demerphq@gemini.(none)>2009-07-27 22:10:55 +0200
commit031cefa092a35217a3ac4abe595ffb31b4d6ec81 (patch)
tree33adb6c6dc9edbfb816c50b9bcd6472e85075fc2 /Porting/make_dot_patch.pl
parentdd61358a03a9af4566da18af61a95b264c7f9754 (diff)
downloadperl-031cefa092a35217a3ac4abe595ffb31b4d6ec81.tar.gz
add a simple utility to Porting/ which knows how to generate .patch files
Diffstat (limited to 'Porting/make_dot_patch.pl')
-rwxr-xr-xPorting/make_dot_patch.pl46
1 files changed, 46 insertions, 0 deletions
diff --git a/Porting/make_dot_patch.pl b/Porting/make_dot_patch.pl
new file mode 100755
index 0000000000..cf545ac809
--- /dev/null
+++ b/Porting/make_dot_patch.pl
@@ -0,0 +1,46 @@
+use strict;
+use warnings;
+
+# This is a quickie script which I wrote to generate the .patch file for
+# an arbitrary commit. It takes on sha1 as an argument, or saving that
+# uses the sha1 associated to HEAD.
+# It tries to find which of our primary branches the sha1 can be found on,
+# and then prints to standard out something similar to what our rsync feed
+# would produce for that situation. The main difference being, in that case
+# we KNOW what branch we are on, and in this one we dont, and in that case
+# the $tstamp field holds the time the snapshot was generated (so that multiple
+# fetches will always have an increasing tstamp field), however in this case
+# we use the commit date of the sha1.
+#
+# This is more or less intended to be used as a utility to generated .patch
+# files for other processes, like gitweb and snapshots.
+#
+# The script assumes it is being run from a git WD.
+#
+# Yves
+
+use POSIX qw(strftime);
+sub isotime { strftime "%Y-%m-%d.%H:%M:%S",gmtime(shift||time) }
+
+my $sha1= shift || `git rev-parse HEAD`;
+chomp($sha1);
+my @branches=(
+ 'origin/blead',
+ 'origin/maint-5.10',
+ 'origin/maint-5.8',
+ 'origin/maint-5.8-dor',
+ 'origin/maint-5.6',
+ 'origin/maint-5.005',
+ 'origin/maint-5.004',
+);
+my $branch;
+foreach my $b (@branches) {
+ $branch= $b and last
+ if `git log --pretty='format:%H' $b | grep $sha1`;
+}
+
+$branch ||= "unknown-branch";
+my $tstamp= isotime(`git log -1 --pretty="format:%ct" $sha1`);
+chomp(my $describe= `git describe`);
+print join(" ", $branch, $tstamp, $sha1, $describe) . "\n";
+