]>
Commit | Line | Data |
---|---|---|
9e22a467 GKH |
1 | #!/usr/bin/perl -W |
2 | # | |
3 | # convert git commit id to a pretty patch we can apply to the stable tree | |
4 | # | |
5 | # Written in perl because the bash version is broken, it doesn't pass | |
6 | # through the patch correctly :( | |
7 | # | |
8 | ||
9 | my $base_id = ""; | |
10 | my $line; | |
11 | my $firstline = "true"; | |
12 | my $git_id; | |
13 | my $header_complete = "false"; | |
b34caee8 GKH |
14 | my $signed_off_by_seen = "false"; |
15 | my $signed_off_by_complete = "false"; | |
904d0d6e | 16 | my $eat_subject_trailer = "false"; |
9e22a467 | 17 | my $tmpfile; |
a02dd1f0 | 18 | #my $kernel_version; |
b34caee8 GKH |
19 | |
20 | ||
21 | $SIG{__DIE__} = sub | |
22 | { | |
23 | # what usually happens is we don't have the git version, so clean up | |
24 | # the temp file we created. | |
25 | if ($tmpfile ne "") { | |
26 | unlink $tmpfile; | |
27 | } | |
28 | }; | |
9e22a467 | 29 | |
4aa5ba68 | 30 | $numArgs = $#ARGV + 1; |
b34caee8 | 31 | if ($numArgs < 1) { |
4aa5ba68 GKH |
32 | print "must provide git id\n"; |
33 | exit; | |
34 | } | |
35 | ||
9e22a467 GKH |
36 | $base_id = shift; |
37 | ||
38 | if ($base_id eq "") { | |
39 | print "must provide git id\n"; | |
4aa5ba68 | 40 | exit; |
9e22a467 GKH |
41 | } |
42 | ||
a02dd1f0 GKH |
43 | #$kernel_version = shift; |
44 | #if (!defined($kernel_version)) { | |
45 | # $kernel_version = ""; | |
46 | #} | |
b34caee8 | 47 | |
9e22a467 GKH |
48 | #print "handing commit id $base_id\n"; |
49 | ||
50 | $tmpfile = `mktemp patch.XXXXX` || die "Failed to run mktemp"; | |
51 | chomp($tmpfile); | |
904d0d6e GKH |
52 | |
53 | # if we were smart, we could just reconstruct the header the way we want to | |
54 | # with a format: string, but we are not, so let's parse the thing out... | |
55 | $from = `git show --pretty=format:"%aN <%ae>" $base_id | head -n 1` || die "Failed to run git to get from"; | |
56 | $subj = `git show --pretty=format:"Subject: %s" $base_id | head -n 1` || die "Failed to run git to get subject"; | |
9e22a467 GKH |
57 | |
58 | open FILE, ">$tmpfile" || die "Failed to create $tmpfile"; | |
59 | open GIT, "git show --pretty=email $base_id |" || die "Failed to run git"; | |
60 | ||
61 | while ($line = <GIT>) { | |
904d0d6e GKH |
62 | |
63 | # subjects have the fun ability to line-wrap, but we handled that above | |
64 | # when we grabbed the "raw" subject, so just ignore trailing subject | |
65 | # lines. | |
66 | if ($eat_subject_trailer eq "true") { | |
67 | $eat_subject_trailer = "false"; | |
68 | if ($line =~m/^ /) { | |
69 | # eat this line | |
70 | next; | |
71 | } | |
72 | } | |
73 | ||
74 | # If this is the subject line, use our own. | |
75 | if ($line =~m/^Subject: /) { | |
76 | $line = $subj; | |
77 | $eat_subject_trailer = "true"; | |
78 | } | |
b34caee8 GKH |
79 | |
80 | if ($line =~m/^Signed-off-by:/) { | |
81 | $signed_off_by_seen = "true"; | |
82 | } | |
83 | ||
84 | if ($signed_off_by_seen eq "true") { | |
85 | if ($signed_off_by_complete eq "false") { | |
86 | if ($line eq "\n") { | |
87 | print FILE "Signed-off-by: Greg Kroah-Hartman <gregkh\@linuxfoundation.org>\n"; | |
88 | $signed_off_by_complete = "true"; | |
89 | $signed_off_by_seen = "false"; | |
90 | } | |
91 | } | |
92 | } | |
93 | ||
94 | print FILE $line; | |
95 | ||
9e22a467 GKH |
96 | if ($firstline eq "true") { |
97 | my @from = split(/ /, $line); | |
98 | $git_id = $from[1]; | |
99 | #print "git_id = $git_id\n"; | |
100 | $firstline = "false"; | |
101 | } | |
102 | if ($header_complete eq "false") { | |
103 | if ($line eq "\n") { | |
904d0d6e | 104 | print FILE "From: $from\n"; |
9e22a467 GKH |
105 | print FILE "commit $git_id upstream.\n\n"; |
106 | $header_complete = "true"; | |
107 | } | |
108 | } | |
109 | } | |
110 | close GIT; | |
111 | close FILE; | |
112 | ||
113 | #print "$tmpfile\n"; | |
114 | ||
b34caee8 | 115 | system "vim -c \":set syntax=mail\" $tmpfile"; |
4aa5ba68 | 116 | system "reset"; |
9e22a467 GKH |
117 | $new_file = `rename-patch $tmpfile`; |
118 | chomp($new_file); | |
119 | system "mv $new_file ~/linux/stable/"; | |
4aa5ba68 GKH |
120 | #print "moved $new_file to ~/linux/stable/\n"; |
121 | ||
a02dd1f0 GKH |
122 | print "cd ~/linux/stable && ./apply_it $new_file @ARGV\n"; |
123 | system "cd ~/linux/stable && ./apply_it $new_file @ARGV"; | |
b34caee8 GKH |
124 | #system "cp ~/linux/stable/$new_file ~/linux/longterm"; |
125 | #system "cd ~/linux/longterm && ./apply_it $new_file"; | |
9e22a467 GKH |
126 | |
127 | #TMPFILE1=`mktemp patch.XXXXXX` || exit 1 | |
128 | #TMPFILE2=`mktemp patch.XXXXXX` || exit 1 | |
129 | # | |
130 | #GIT_ID=`git show $COMMIT_ID | head -n 1 | cut -f 2 -d ' '` | |
131 | #FROM=`git show --pretty=email $COMMIT_ID | head -n 2 | grep "From: "` | |
132 | # | |
133 | #git show --pretty=email $COMMIT_ID > $TMPFILE1 | |
134 | # | |
135 | #HEADER_COMPLETE=false | |
136 | #while read line | |
137 | #do | |
138 | # # Strip out the [PATCH] portion of the subject line, it's annoying. | |
139 | # new=`echo "$line" | sed -e 's/^Subject: \[PATCH\]/Subject:/g'` | |
140 | # | |
141 | # # copy the line out to the new file | |
142 | # echo "$new" >> $TMPFILE2 | |
143 | # | |
144 | # # add our special text (author and git id) right before | |
145 | # # the changelog text happens. | |
146 | # if [ "$line" == "" ] ; then | |
147 | # if [ $HEADER_COMPLETE == false ] ; then | |
148 | # echo "$FROM" >> $TMPFILE2 | |
149 | # echo "" >> $TMPFILE2 | |
150 | # echo "commit $GIT_ID upstream." >> $TMPFILE2 | |
151 | # echo "" >> $TMPFILE2 | |
152 | # HEADER_COMPLETE=true | |
153 | # fi | |
154 | # fi | |
155 | #done < $TMPFILE1 | |
156 | #rm $TMPFILE1 | |
157 | #vim $TMPFILE2 | |
158 | #PATCH=`rename-patch $TMPFILE2` | |
159 | #mv $PATCH ~/linux/stable/ | |
160 | # | |
161 | #echo "moved $PATCH to ~/linux/stable/" | |
162 | # |