blob: 6a64ef127c98a5c32763dd12dc8087535532b7d0 [file] [log] [blame]
#!/usr/bin/perl -W
#
# convert git commit id to a pretty patch we can apply to the stable tree
#
# Written in perl because the bash version is broken, it doesn't pass
# through the patch correctly :(
#
my $base_id = "";
my $line;
my $firstline = "true";
my $git_id;
my $header_complete = "false";
my $tmpfile;
$numArgs = $#ARGV + 1;
if ($numArgs != 1) {
print "must provide git id\n";
exit;
}
$base_id = shift;
if ($base_id eq "") {
print "must provide git id\n";
exit;
}
#print "handing commit id $base_id\n";
$tmpfile = `mktemp patch.XXXXX` || die "Failed to run mktemp";
chomp($tmpfile);
$from = `git show --pretty=email $base_id | head -n 2 | grep "From: "` || die "Failed to run git";
open FILE, ">$tmpfile" || die "Failed to create $tmpfile";
open GIT, "git show --pretty=email $base_id |" || die "Failed to run git";
while ($line = <GIT>) {
$line =~ s/^Subject: \[PATCH\]/Subject:/;
# if (($line =~ m/^diff --git/) {
print FILE $line;
# }
if ($firstline eq "true") {
my @from = split(/ /, $line);
$git_id = $from[1];
#print "git_id = $git_id\n";
$firstline = "false";
}
if ($header_complete eq "false") {
if ($line eq "\n") {
print FILE "$from\n";
print FILE "commit $git_id upstream.\n\n";
$header_complete = "true";
}
}
}
close GIT;
close FILE;
#print "$tmpfile\n";
system "vim $tmpfile";
system "reset";
$new_file = `rename-patch $tmpfile`;
chomp($new_file);
system "mv $new_file ~/linux/stable/";
#print "moved $new_file to ~/linux/stable/\n";
system "cd ~/linux/stable && ./apply_it $new_file";
system "cp ~/linux/stable/$new_file ~/linux/longterm";
system "cd ~/linux/longterm && ./apply_it $new_file";
#TMPFILE1=`mktemp patch.XXXXXX` || exit 1
#TMPFILE2=`mktemp patch.XXXXXX` || exit 1
#
#GIT_ID=`git show $COMMIT_ID | head -n 1 | cut -f 2 -d ' '`
#FROM=`git show --pretty=email $COMMIT_ID | head -n 2 | grep "From: "`
#
#git show --pretty=email $COMMIT_ID > $TMPFILE1
#
#HEADER_COMPLETE=false
#while read line
#do
# # Strip out the [PATCH] portion of the subject line, it's annoying.
# new=`echo "$line" | sed -e 's/^Subject: \[PATCH\]/Subject:/g'`
#
# # copy the line out to the new file
# echo "$new" >> $TMPFILE2
#
# # add our special text (author and git id) right before
# # the changelog text happens.
# if [ "$line" == "" ] ; then
# if [ $HEADER_COMPLETE == false ] ; then
# echo "$FROM" >> $TMPFILE2
# echo "" >> $TMPFILE2
# echo "commit $GIT_ID upstream." >> $TMPFILE2
# echo "" >> $TMPFILE2
# HEADER_COMPLETE=true
# fi
# fi
#done < $TMPFILE1
#rm $TMPFILE1
#vim $TMPFILE2
#PATCH=`rename-patch $TMPFILE2`
#mv $PATCH ~/linux/stable/
#
#echo "moved $PATCH to ~/linux/stable/"
#