-
Notifications
You must be signed in to change notification settings - Fork 7
/
comments.pl
273 lines (257 loc) · 10.9 KB
/
comments.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
#!/usr/bin/perl
require "./stats/tag2date.pm";
sub num {
my ($t)=@_;
if($t =~ /^curl-(\d)_(\d+)_(\d+)/) {
return 10000*$1 + 100*$2 + $3;
}
elsif($t =~ /^curl-(\d)_(\d+)/) {
return 10000*$1 + 100*$2;
}
}
sub sortthem {
return num($a) <=> num($b);
}
@alltags= `git tag -l`;
foreach my $t (@alltags) {
chomp $t;
if($t =~ /^curl-([0-9_]*[0-9])\z/) {
push @releases, $t;
}
}
sub comments {
my ($tag, $file) = @_;
# Get source files to count
my @files;
open(G, "git ls-tree -r --name-only $tag -- src lib include 2>/dev/null|");
while(<G>) {
chomp;
if($_ =~ /[ch]\z/) {
push @files, $_;
}
}
close(G);
my $cmd;
for(@files) {
$cmd .= "$tag:$_ ";
}
my $blanks, $comments, $code;
open(G, "git show $cmd 2>/dev/null| cloc --force-lang=C --csv -|");
while(<G>) {
if($_ =~ /^1,SUM,(\d*),(\d*),(\d*)/) {
($blanks, $comments, $code)=($1, $2, $3);
last;
}
}
close(G);
return ($blanks, $comments, $code, scalar(@files));
}
print <<CACHE
curl 6.5;2000-03-14;1900;3785;11469;64;22.06
curl 6.5.1;2000-03-21;1903;3779;11439;64;22.07
curl 6.5.2;2000-03-21;1903;3779;11504;64;21.99
curl 7.1.1;2000-08-21;2109;4430;12632;71;23.11
curl 7.2;2000-08-30;2135;4439;12749;71;22.97
curl 7.3;2000-09-28;2348;4622;14240;74;21.79
curl 7.4.1;2000-10-16;2438;4832;14659;78;22.03
curl 7.5;2000-12-04;2525;4897;14936;78;21.90
curl 7.5.2;2001-01-05;2547;3867;15179;78;17.91
curl 7.6;2001-01-27;2622;4041;13630;76;19.91
curl 7.6.1;2001-02-13;2653;4074;14032;75;19.63
curl 7.7;2001-03-22;2784;4503;14791;77;20.40
curl 7.7.1;2001-04-04;2797;4540;14819;77;20.49
curl 7.7.2;2001-04-23;2814;4581;14895;77;20.55
curl 7.7.3;2001-05-07;2840;4621;15020;77;20.56
curl 7.8;2001-06-07;2911;4824;15188;79;21.04
curl 7.8.1;2001-08-20;2909;4875;15092;80;21.31
curl 7.9;2001-09-25;3093;5399;16008;80;22.04
curl 7.9.1;2001-11-04;3268;5827;16691;82;22.60
curl 7.9.2;2001-12-05;3387;6118;17173;85;22.93
curl 7.9.3;2002-01-23;3631;6287;18362;89;22.23
curl 7.9.4;2002-02-05;3640;6290;18399;89;22.20
curl 7.9.5;2002-03-07;3872;6544;18756;94;22.43
curl 7.9.6;2002-04-15;4185;6976;19227;97;22.96
curl 7.9.7;2002-05-13;4268;7050;19622;97;22.79
curl 7.9.8;2002-06-13;4339;7189;19901;97;22.87
curl 7.10;2002-10-01;4563;7518;20834;101;22.84
curl 7.10.1;2002-10-11;4577;7526;20899;101;22.80
curl 7.10.2;2002-11-18;4595;7546;21036;100;22.74
curl 7.10.3;2003-01-14;4672;7663;21312;100;22.77
curl 7.10.4;2003-04-02;4474;7222;19922;99;22.84
curl 7.10.5;2003-05-19;4544;7339;20322;99;22.79
curl 7.10.6;2003-07-28;4937;8019;21918;107;22.99
curl 7.10.7;2003-08-15;5084;8203;22536;107;22.90
curl 7.10.8;2003-11-01;5223;8463;23290;109;22.89
curl 7.11.0;2004-01-22;5359;8827;23904;120;23.17
curl 7.11.1;2004-03-18;5925;9471;25226;126;23.31
curl 7.11.2;2004-04-26;5986;9939;25609;126;23.93
curl 7.12.0;2004-06-02;6283;10621;27302;136;24.03
curl 7.12.1;2004-08-10;6107;10451;27327;136;23.81
curl 7.12.2;2004-10-18;6241;10639;27924;136;23.75
curl 7.12.3;2004-12-20;6495;10980;29023;140;23.61
curl 7.13.0;2005-02-01;6523;11066;29241;142;23.63
curl 7.13.1;2005-03-04;6716;11229;30286;143;23.28
curl 7.13.2;2005-04-05;6633;11112;30374;140;23.09
curl 7.14.0;2005-05-16;6780;11434;31192;144;23.14
curl 7.14.1;2005-09-01;6849;11588;31601;144;23.16
curl 7.15.0;2005-10-13;6953;11760;32236;146;23.08
curl 7.15.1;2005-12-06;6995;11852;32524;147;23.07
curl 7.15.2;2006-02-27;7096;12046;32814;147;23.19
curl 7.15.3;2006-03-20;7098;12060;32834;147;23.20
curl 7.15.4;2006-06-12;7674;12916;34701;150;23.36
curl 7.15.5;2006-08-07;7805;13176;35103;153;23.49
curl 7.16.0;2006-10-29;8040;13510;36043;155;23.46
curl 7.16.1;2007-01-29;8315;13927;37647;157;23.25
curl 7.16.2;2007-04-11;8611;14385;39320;161;23.08
curl 7.16.3;2007-06-25;8711;14528;40375;161;22.84
curl 7.16.4;2007-07-10;8796;14603;40857;162;22.73
curl 7.17.0;2007-09-13;9230;14939;41776;167;22.65
curl 7.17.1;2007-10-29;9446;15179;42682;167;22.55
curl 7.18.0;2008-01-28;9548;15434;43409;167;22.57
curl 7.18.1;2008-03-30;9638;15604;43938;168;22.56
curl 7.18.2;2008-06-04;9970;16218;44376;169;22.98
curl 7.19.0;2008-09-01;10169;16608;45163;171;23.09
curl 7.19.1;2008-11-05;10346;16912;46054;174;23.07
curl 7.19.2;2008-11-13;10332;16897;45983;174;23.08
curl 7.19.3;2009-01-19;10375;17038;46098;174;23.18
curl 7.19.4;2009-03-02;10648;17475;47674;178;23.06
curl 7.19.5;2009-05-18;10688;17604;47876;180;23.11
curl 7.19.6;2009-08-12;11090;18273;48422;185;23.49
curl 7.19.7;2009-11-04;11202;18492;48959;189;23.51
curl 7.20.0;2010-02-09;12123;19688;52640;201;23.31
curl 7.20.1;2010-04-14;12253;19683;53201;203;23.12
curl 7.21.0;2010-06-16;12798;20291;56730;218;22.59
curl 7.21.1;2010-08-11;12901;20508;57199;222;22.63
curl 7.21.2;2010-10-12;12989;20714;57592;224;22.69
curl 7.21.3;2010-12-15;13202;20983;58160;228;22.72
curl 7.21.4;2011-02-17;13365;21265;59186;232;22.67
curl 7.21.5;2011-04-17;13517;21732;59867;236;22.85
curl 7.21.6;2011-04-22;13559;21815;59949;238;22.89
curl 7.21.7;2011-06-23;13566;21963;59974;238;23.00
curl 7.22.0;2011-09-13;13670;22217;60428;245;23.07
curl 7.23.0;2011-11-14;14188;23702;61772;303;23.78
curl 7.23.1;2011-11-17;14188;23702;61770;303;23.78
curl 7.24.0;2012-01-24;14323;23955;62497;303;23.77
curl 7.25.0;2012-03-22;14409;23956;63108;301;23.61
curl 7.26.0;2012-05-24;14346;23770;63263;298;23.45
curl 7.27.0;2012-07-27;15028;24661;67140;308;23.08
curl 7.28.0;2012-10-10;15092;24734;67949;308;22.95
curl 7.28.1;2012-11-20;15154;24858;68289;310;22.95
curl 7.29.0;2013-02-06;15333;25101;68606;318;23.02
curl 7.30.0;2013-04-12;15605;25544;69846;322;23.01
curl 7.31.0;2013-06-22;15737;25905;70617;322;23.08
curl 7.32.0;2013-08-11;16137;26405;72871;326;22.88
curl 7.33.0;2013-10-13;16221;26561;73479;327;22.85
curl 7.34.0;2013-12-16;16313;26723;74123;328;22.81
curl 7.35.0;2014-01-29;16361;26771;74482;328;22.76
curl 7.36.0;2014-03-26;16602;27000;75809;328;22.61
curl 7.37.0;2014-05-20;16731;27190;76452;329;22.59
curl 7.37.1;2014-07-16;16797;27265;76953;329;22.53
curl 7.38.0;2014-09-10;17068;27618;78189;329;22.48
curl 7.39.0;2014-11-05;17008;27658;78001;329;22.55
curl 7.40.0;2015-01-07;17553;28260;80280;334;22.41
curl 7.41.0;2015-02-25;17374;28267;79244;336;22.63
curl 7.42.0;2015-04-22;17306;28336;79355;337;22.67
curl 7.42.1;2015-04-28;17306;28337;79359;337;22.67
curl 7.43.0;2015-06-17;17377;28487;79909;334;22.65
curl 7.44.0;2015-08-11;17439;28557;80299;334;22.61
curl 7.45.0;2015-10-07;17440;28593;80431;334;22.61
curl 7.46.0;2015-12-01;17643;28836;81335;338;22.56
curl 7.47.0;2016-01-27;17704;28887;81636;338;22.53
curl 7.47.1;2016-02-08;17747;28947;81815;338;22.53
curl 7.48.0;2016-03-23;17802;28962;82043;338;22.48
curl 7.49.0;2016-05-17;18062;29456;83381;348;22.50
curl 7.49.1;2016-05-30;18090;29533;83461;350;22.53
curl 7.50.0;2016-07-21;18128;29608;83717;350;22.52
curl 7.50.1;2016-08-03;18129;29609;83739;350;22.52
curl 7.50.2;2016-09-07;18190;29775;84035;350;22.56
curl 7.50.3;2016-09-14;18197;29782;84057;350;22.56
curl 7.51.0;2016-11-02;18191;29746;84041;348;22.54
curl 7.52.0;2016-12-20;18354;29990;85564;350;22.40
curl 7.52.1;2016-12-22;18354;29990;85564;350;22.40
curl 7.53.0;2017-02-22;18413;30017;85940;350;22.34
curl 7.53.1;2017-02-24;18415;30019;85962;350;22.34
curl 7.54.0;2017-04-19;18503;30114;86709;351;22.25
curl 7.54.1;2017-06-14;18536;30039;87155;349;22.13
curl 7.55.0;2017-08-09;18517;29964;87278;348;22.07
curl 7.55.1;2017-08-13;18538;29980;87372;348;22.06
curl 7.56.0;2017-10-04;18875;30196;89506;348;21.79
curl 7.56.1;2017-10-23;18910;30233;89906;348;21.74
curl 7.57.0;2017-11-29;19027;30418;90756;352;21.70
curl 7.58.0;2018-01-23;19473;30847;93208;355;21.49
curl 7.59.0;2018-03-13;19586;31015;93756;361;21.48
curl 7.60.0;2018-05-15;19714;31172;94675;362;21.42
curl 7.61.0;2018-07-11;19771;31277;95187;364;21.39
curl 7.61.1;2018-09-04;19758;31322;95426;364;21.38
curl 7.62.0;2018-10-30;19959;31627;97986;371;21.15
curl 7.63.0;2018-12-12;19924;31488;97846;369;21.10
curl 7.64.0;2019-02-06;19884;31307;98118;366;20.97
curl 7.64.1;2019-03-27;19882;31453;99019;368;20.92
curl 7.65.0;2019-05-22;19760;31334;98775;368;20.91
curl 7.65.1;2019-06-04;19776;31351;98885;368;20.90
curl 7.65.2;2019-07-17;19762;31337;98930;368;20.89
curl 7.65.3;2019-07-19;19761;31334;98924;368;20.89
curl 7.66.0;2019-09-10;20267;31725;102161;376;20.58
curl 7.67.0;2019-11-05;20287;31782;102474;378;20.57
curl 7.68.0;2020-01-08;20462;32036;103656;380;20.52
curl 7.69.0;2020-03-04;20587;32288;104633;382;20.50
curl 7.69.1;2020-03-11;20617;32297;104863;382;20.47
curl 7.70.0;2020-04-29;20762;32441;106155;387;20.36
curl 7.71.0;2020-06-23;20818;32727;107240;393;20.35
curl 7.71.1;2020-06-30;20827;32741;107249;393;20.36
curl 7.72.0;2020-08-19;20867;32796;107602;395;20.34
curl 7.73.0;2020-10-14;20545;32468;108315;397;20.13
curl 7.74.0;2020-12-09;20601;32596;108804;399;20.12
curl 7.75.0;2021-02-03;20782;32832;110983;403;19.95
curl 7.76.0;2021-03-31;20837;33006;111574;406;19.95
curl 7.76.1;2021-04-14;20828;33006;111610;406;19.95
curl 7.77.0;2021-05-26;20856;33204;112217;408;19.97
curl 7.78.0;2021-07-21;20705;33018;111680;406;19.96
curl 7.79.0;2021-09-14;20750;33043;112032;407;19.93
curl 7.79.1;2021-09-22;20751;33046;112046;407;19.93
curl 7.80.0;2021-11-10;20871;33143;112697;408;19.88
curl 7.81.0;2022-01-05;20934;33236;113351;408;19.84
curl 7.82.0;2022-03-05;20277;32065;111886;400;19.52
curl 7.83.0;2022-04-27;20460;32352;113165;406;19.49
curl 7.83.1;2022-05-11;20466;32370;113281;406;19.49
curl 7.84.0;2022-06-27;20557;33331;114112;408;19.84
curl 7.85.0;2022-08-31;20562;33324;114789;408;19.76
curl 7.86.0;2022-10-26;20779;33625;115883;411;19.75
curl 7.87.0;2022-12-21;21018;33899;117536;413;19.66
curl 7.88.0;2023-02-15;21542;34220;121370;419;19.32
curl 7.88.1;2023-02-20;21543;34222;121430;419;19.31
curl 8.0.0;2023-03-20;21546;34237;121945;419;19.26
curl 8.0.1;2023-03-20;21547;34230;121935;419;19.26
curl 8.1.0;2023-05-17;22113;34831;125948;429;19.04
curl 8.1.1;2023-05-23;22114;34823;125969;429;19.04
curl 8.1.2;2023-05-30;22092;34823;125878;429;19.05
curl 8.2.0;2023-07-19;22131;34957;126527;432;19.04
curl 8.2.1;2023-07-26;22132;34961;126531;432;19.04
curl 8.3.0;2023-09-13;21645;34735;125235;430;19.13
curl 8.4.0;2023-10-11;21653;34773;125201;431;19.15
curl 8.5.0;2023-12-06;21709;34916;126034;433;19.12
curl 8.6.0;2024-01-31;21865;34991;128679;437;18.86
curl 8.7.0;2024-03-27;22148;35437;130706;443;18.82
curl 8.7.1;2024-03-27;22148;35437;130706;443;18.82
CACHE
;
foreach my $t (sort sortthem @releases) {
if(num($t) <= 80701) {
next;
}
my $d = tag2date($t);
my ($blanks, $comments, $code, $files) = comments($t);
# prettyfy version
$t =~ s/_/./g;
$t =~ s/-/ /g;
printf "$t;$d;$blanks;$comments;$code;$files;%.2f\n",
$comments*100/($code+$blanks+$comments);
}
$t=`git describe`;
chomp $t;
my ($blanks, $comments, $code, $files) = comments($t);
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime(time);
my $date = sprintf "%04d-%02d-%02d", $year + 1900, $mon + 1, $mday;
printf "now;$date;$blanks;$comments;$code;$files;%.2f\n",
$comments*100/($code+$blanks+$comments);