|
|
|
#!/usr/bin/perl
|
|
|
|
|
|
|
|
sub create_patches {
|
|
|
|
my $tag=shift;
|
|
|
|
my $pdir=shift;
|
|
|
|
my $n=1;
|
|
|
|
my @lines;
|
|
|
|
|
|
|
|
mkdir $pdir, 0755;
|
|
|
|
|
|
|
|
open( GIT, 'git log -p --pretty=email --stat -m --first-parent --reverse '.$tag.'..HEAD |');
|
|
|
|
|
|
|
|
while (<GIT>) {
|
|
|
|
if (/^From [a-z0-9]{40} .*$/) {
|
|
|
|
my $fname = sprintf("%04d", $n++).".patch";
|
|
|
|
push @lines, $fname;
|
|
|
|
open FH, ">".$pdir."/".$fname;
|
|
|
|
}
|
|
|
|
print FH;
|
|
|
|
}
|
|
|
|
|
|
|
|
return @lines;
|
|
|
|
};
|
|
|
|
|
|
|
|
use POSIX qw(strftime);
|
|
|
|
my $datestr = strftime "%Y%m%d", gmtime;
|
|
|
|
|
|
|
|
my $tag=shift;
|
|
|
|
my $pdir=shift;
|
|
|
|
$tag=`git describe --abbrev=0 --tags` if not defined $tag;
|
|
|
|
chomp($tag);
|
|
|
|
my @patches=&create_patches($tag, $pdir);
|
|
|
|
my $num=$#patches + 2;
|
|
|
|
$tag=~s/[^0-9]+?([0-9]+)/$1/;
|
|
|
|
my $release="$num.git$datestr";
|
|
|
|
$release="1" if $num == 1;
|
|
|
|
|
|
|
|
while(<>) {
|
|
|
|
if (/^Version:/) {
|
|
|
|
print "Version: $tag\n";
|
|
|
|
}
|
|
|
|
elsif (/^%define dist_free_release/) {
|
|
|
|
print "%define dist_free_release $release\n";
|
|
|
|
}
|
|
|
|
elsif ((/^Source0:/) || (/^Source:/)) {
|
|
|
|
print $_;
|
|
|
|
$num=1;
|
|
|
|
for(@patches) {
|
|
|
|
s/.*\///g;
|
|
|
|
print "Patch$num: $_\n";
|
|
|
|
$num++;
|
|
|
|
}
|
|
|
|
print "\n";
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
print $_;
|
|
|
|
}
|
|
|
|
}
|