Annotation of loncom/build/Makefile.cvs, revision 1.3

1.1       harris41    1: # The LearningOnline Network with CAPA
                      2: 
                      3: # Scott Harrison
1.3     ! harris41    4: # $Id: Makefile.cvs,v 1.2 2002/01/08 00:01:22 harris41 Exp $
1.1       harris41    5: 
                      6: STATDIR="loncom/build/cvsstats"
                      7: STATSUBDIR="cvsstats"
                      8: 
                      9: help:
                     10: 	@echo "*** You need to specify a valid target ***"
                     11: 	@echo "cvsreport: look at the latest changes over the last week"
                     12: 	@echo "cvscommit: look at the number of commits since the origin of"
                     13: 	@echo "           LON-CAPA archiving"
                     14: 	@echo "linesofcode: look at the number of unique lines of code since"
                     15: 	@echo "           LON-CAPA archiving"
                     16: 	@echo "Information is placed inside CVS:loncom/build/cvsstats"
                     17: 
                     18: cvsreport:
                     19: 	# Header
                     20: 	echo "<h1>Automatically generated CVS report</h1>" > \
                     21: 	../../doc/build/cvsreport.html
                     22: 	# General Date Info
                     23: 	echo "<h1>LON-CAPA Software Changes from `date --date='7 days ago' \
                     24: 	+\"%Y-%m-%d\"` to `date +\"%Y-%m-%d\"`</h1>" >> \
                     25: 	../../doc/build/cvsreport.html
                     26: 	# General Alteration Info
                     27: 	echo "<p>Number of altered files:" >> ../../doc/build/cvsreport.html
                     28: 	cd ../..; cvs log -d ">`date --date='8 days ago' +\"%Y-%m-%d\"`" \
                     29: 	loncom CAPA doc packaging 2>/dev/null | perl \
                     30: 	loncom/build/cvsfilter.pl | grep '^Working file:' | cut -b15- | \
                     31: 	wc -l >> doc/build/cvsreport.html
                     32: 	# Listing of Altered Files
                     33: 	echo "</p><p>Altered files:</p><p><pre>" >> \
                     34: 	../../doc/build/cvsreport.html
                     35: 	cd ../..; cvs log -d ">`date --date='8 days ago' +\"%Y-%m-%d\"`" \
                     36: 	loncom CAPA doc packaging 2>/dev/null | \
                     37: 	perl loncom/build/cvsfilter.pl | grep '^Working file:' | cut -b15- \
                     38: 	>> doc/build/cvsreport.html
                     39: 	# Log entries for loncom
                     40: 	echo "</pre></p><p>Log entries for <b>loncom</b>:</p><pre>" >> \
                     41: 	../../doc/build/cvsreport.html
                     42: 	cd ../../loncom; cvs log -d ">`date --date='8 days ago' \
                     43: 	+\"%Y-%m-%d\"`" . 2>/dev/null | perl ../loncom/build/cvsfilter.pl >> \
                     44: 	../doc/build/cvsreport.html
                     45: 	# Log entries for CAPA
                     46: 	echo "</pre></p><p>Log entries for <b>CAPA</b>:</p><pre>" >> \
                     47: 	../../doc/build/cvsreport.html
                     48: 	cd ../../CAPA; cvs log -d ">`date --date='8 days ago' \
                     49: 	+\"%Y-%m-%d\"`" . 2>/dev/null | perl ../loncom/build/cvsfilter.pl >> \
                     50: 	../doc/build/cvsreport.html
                     51: 	# Log entries for doc
                     52: 	echo "</pre></p><p>Log entries for <b>doc</b>:</p><pre>" >> \
                     53: 	../../doc/build/cvsreport.html
                     54: 	cd ../../doc; cvs log -d ">`date --date='8 days ago' \
                     55: 	+\"%Y-%m-%d\"`" . 2>/dev/null | perl ../loncom/build/cvsfilter.pl >> \
                     56: 	../doc/build/cvsreport.html
                     57: 	# Log entries for packaging
                     58: 	echo "</pre></p><p>Log entries for <b>packaging</b>:</p><pre>" >> \
                     59: 	../../doc/build/cvsreport.html
                     60: 	cd ../../packaging; cvs log -d ">`date --date='8 days ago' \
                     61: 	+\"%Y-%m-%d\"`" . 2>/dev/null | perl ../loncom/build/cvsfilter.pl >> \
                     62: 	../doc/build/cvsreport.html
                     63: 	echo "</pre></p>" >> ../../doc/build/cvsreport.html
                     64: 
                     65: statpage:
1.3     ! harris41   66: 	install -d $(STATSUBDIR)
1.1       harris41   67: 	echo '<html><title>LON-CAPA Coding Metrics</title>' > $(STATSUBDIR)/index.html
                     68: 	echo '<body bgcolor="#ffffff">' >> $(STATSUBDIR)/index.html
                     69: 	echo '<h1>LON-CAPA Coding Metrics</h1>' >> $(STATSUBDIR)/index.html
                     70: 	echo '<br />Compiled as of ' >> $(STATSUBDIR)/index.html
                     71: 	date >> $(STATSUBDIR)/index.html
1.2       harris41   72: 	echo "<p>The general algorithm for counting lines of code (this excludes blank lines) is <blockquote>cvs -q diff -D'start-date' -D'end-date' -b -B -N | egrep '^> .*[^ \t]' | sed 's/^> //g' | sort | uniq | wc -l</blockquote>&nbsp;</p>" >> $(STATSUBDIR)/index.html
                     73: 	echo "<p>The general algorithm for counting the number of CVS repository commits (includes additions, deletions, and modifications) is: <blockquote>cvs history -D'start-date' -a -xMAR | wc -l</blockquote>&nbsp;</p>" >> $(STATSUBDIR)/index.html
                     74: 	echo "<p>Each listing contains two graphs.  One graph relates to the entire LON-CAPA repository.  The other graph relates solely to the *.pm files (perl modules including Apache handlers).</p>" >> $(STATSUBDIR)/index.html
                     75: 	echo '<br /><a href="#loc">Lines of Code; unique changes per month</a>' >> $(STATSUBDIR)/index.html
                     76: 	echo '<br /><a href="#locsum">Lines of Code; aggregate sum of unique changes per month</a>' >> $(STATSUBDIR)/index.html
                     77: 	echo '<br /><a href="#commit">Number of commits to software repository per month</a>' >> $(STATSUBDIR)/index.html
                     78: 	echo '<br /><a href="#commitsum">Aggregate sum of number of commits to software repository per month</a>' >> $(STATSUBDIR)/index.html
                     79: 	echo '<hr /><a name="loc"><h3>Lines of Code</h3>' >> $(STATSUBDIR)/index.html
                     80: 	echo 'The first graph displays the number of unique line changes made in the CVS repository per month.  The second graphs displays the number of unique line changes made to *.pm files in the CVS repository per month.' >> $(STATSUBDIR)/index.html
1.1       harris41   81: 	echo '<br /><img src="loc.png" alt="lines of code" />' >> $(STATSUBDIR)/index.html
                     82: 	echo '<br /><img src="locpm.png" alt="lines of code, perl modules" />' >> $(STATSUBDIR)/index.html
1.2       harris41   83: 	echo '<hr /><a name="locsum"><h3>Aggregate Lines of Code</h3>' >> $(STATSUBDIR)/index.html
                     84: 	echo 'The first graph displays the aggregate number of unique line changes made in the CVS repository per month.  The second graphs displays the aggregate number of unique line changes made to *.pm files in the CVS repository per month.' >> $(STATSUBDIR)/index.html
1.1       harris41   85: 	echo '<br /><img src="locsum.png" alt="aggregate lines of code" />' >> $(STATSUBDIR)/index.html
                     86: 	echo '<br /><img src="locpmsum.png" alt="aggregate lines of code, perl modules" />' >> $(STATSUBDIR)/index.html
1.2       harris41   87: 	echo '<hr /><a name="commit"><h3>Commits to Repository</h3>' >> $(STATSUBDIR)/index.html
                     88: 	echo 'The first graph displays the number of repository commits (additions, deletions, and modifications) made in the CVS repository per month.  The second graphs displays the number of repository commits involving *.pm files made in the CVS repository per month.' >> $(STATSUBDIR)/index.html
1.1       harris41   89: 	echo '<br /><img src="commit.png" alt="number of commits" />' >> $(STATSUBDIR)/index.html
                     90: 	echo '<br /><img src="commitpm.png" alt="number of commits, perl modules" />' >> $(STATSUBDIR)/index.html
1.2       harris41   91: 	echo '<hr /><a name="commitsum"><h3>Aggregate Commits to Repository</h3>' >> $(STATSUBDIR)/index.html
                     92: 	echo 'The first graph displays the aggregate number of repository commits (additions, deletions, and modifications) made in the CVS repository per month.  The second graphs displays the aggregate number of repository commits involving *.pm files made in the CVS repository per month.' >> $(STATSUBDIR)/index.html
1.1       harris41   93: 	echo '<br /><img src="commitsum.png" alt="aggregate number of commits" />' >> $(STATSUBDIR)/index.html
                     94: 	echo '<br /><img src="commitpmsum.png" alt="aggregate number of commits, perl modules" />' >> $(STATSUBDIR)/index.html
                     95: 	echo '</body>' >> $(STATSUBDIR)/index.html
                     96: 	echo '</html>' >> $(STATSUBDIR)/index.html
                     97: 
                     98: linesofcode:
                     99: 	install -d cvsstats
                    100: 	# for all, and for .pm
                    101: 	# get date array
                    102: 	cd ../..; perl -e ' \
                    103: ($$begindate,$$enddate)=@ARGV;\
                    104: ($$by,$$bm,$$bd)=($$begindate=~/(\d{4,4})(\d{2,2})(\d{2,2})/);\
                    105: ($$ey,$$em,$$ed)=($$enddate=~/(\d{4,4})(\d{2,2})(\d{2,2})/);\
                    106: for ($$y=$$by; $$y<=$$ey; $$y++) {\
                    107:     if ($$y==$$by) {$$m=$$bm;} else {$$m=1;}\
                    108:     if ($$y==$$ey) {$$m2=$$em;} else {$$m2=12;}\
                    109:     for ($$m; $$m<=$$m2; $$m++) {\
                    110: 	printf("$$odate\t%4.4d%2.2d%2.2d\n",$$y,$$m,$$bd) if $$odate; \
                    111: 	$$odate=sprintf("%4.4d%2.2d%2.2d",$$y,$$m,$$bd);\
                    112:     }\
                    113: }' 20000101 `date +"%Y%m%d"` |\
                    114: perl -nle '($$d1,$$d2)=split(/\t/);$$loc=`cvs -q diff -D$$d1 -D$$d2 -b -B -N | egrep \"^> .*[^ \t]\" | sed \"s/^> //g\" | sort | uniq | wc -l`;chomp $$loc;$$locsum+=$$loc;print "$$d2\t$$loc\t$$locsum";' > $(STATDIR)/table.txt
                    115: 	echo -e 'set xdata time\nset timefmt "%Y%m%d"\nset format x "%b %y"\nset xlabel "time"\nset ylabel "lines of code"\nset nokey\nset title "Lines of Code\\nUnique changes per month"\nset output "cvsstats/loc.png"\nset term png color\nplot "cvsstats/table.txt" using 1:2 with lines' | gnuplot
1.2       harris41  116: 	echo -e 'set xdata time\nset timefmt "%Y%m%d"\nset format x "%b %y"\nset xlabel "time"\nset ylabel "lines of code"\nset nokey\nset title "Lines of Code\\nAggregate count; Unique changes per month"\nset output "cvsstats/locsum.png"\nset term png color\nplot "cvsstats/table.txt" using 1:3 with lines' | gnuplot
1.1       harris41  117: 	cd ../..; perl -e ' \
                    118: ($$begindate,$$enddate)=@ARGV;\
                    119: ($$by,$$bm,$$bd)=($$begindate=~/(\d{4,4})(\d{2,2})(\d{2,2})/);\
                    120: ($$ey,$$em,$$ed)=($$enddate=~/(\d{4,4})(\d{2,2})(\d{2,2})/);\
                    121: for ($$y=$$by; $$y<=$$ey; $$y++) {\
                    122:     if ($$y==$$by) {$$m=$$bm;} else {$$m=1;}\
                    123:     if ($$y==$$ey) {$$m2=$$em;} else {$$m2=12;}\
                    124:     for ($$m; $$m<=$$m2; $$m++) {\
                    125: 	printf("$$odate\t%4.4d%2.2d%2.2d\n",$$y,$$m,$$bd) if $$odate; \
                    126: 	$$odate=sprintf("%4.4d%2.2d%2.2d",$$y,$$m,$$bd);\
                    127:     }\
                    128: }' 20000101 `date +"%Y%m%d"` |\
                    129: perl -nle '($$d1,$$d2)=split(/\t/);$$loc=`cvs -q diff -D$$d1 -D$$d2 -b -B -N |\
                    130: perl -e "\@flag=(1);while(<>){if (/RCS file:/) {\@flag=(); pop \@flag; \@flag=(1) if /^RCS file: .*\.pm\,v/;} print if \@flag;}" |\
                    131:  egrep \"^> .*[^ \t]\" | sed \"s/^> //g\" | sort | uniq | wc -l`;chomp $$loc;$$locsum+=$$loc;print "$$d2\t$$loc\t$$locsum";' > $(STATDIR)/tablepm.txt
                    132: # process counts, generate table
                    133: 	# pass table to gnuplot
1.2       harris41  134: 	echo -e 'set xdata time\nset timefmt "%Y%m%d"\nset format x "%b %y"\nset xlabel "time"\nset ylabel "lines of code"\nset nokey\nset title "Lines of Code, perl modules\\nUnique changes per month"\nset output "cvsstats/locpm.png"\nset term png color\nplot "cvsstats/tablepm.txt" using 1:2 with lines' | gnuplot
                    135: 	echo -e 'set xdata time\nset timefmt "%Y%m%d"\nset format x "%b %y"\nset xlabel "time"\nset ylabel "lines of code"\nset nokey\nset title "Lines of Code, perl modules\\nAggregate count; Unique changes per month"\nset output "cvsstats/locpmsum.png"\nset term png color\nplot "cvsstats/tablepm.txt" using 1:3 with lines' | gnuplot
1.1       harris41  136: 
                    137: cvscommit:
1.2       harris41  138: 	install -d cvsstats
1.1       harris41  139: 	# for all, and for .pm
                    140: 	# get date array
1.2       harris41  141: 	cd ../..; perl -e ' \
                    142: ($$begindate,$$enddate)=@ARGV;\
                    143: ($$by,$$bm,$$bd)=($$begindate=~/(\d{4,4})(\d{2,2})(\d{2,2})/);\
                    144: ($$ey,$$em,$$ed)=($$enddate=~/(\d{4,4})(\d{2,2})(\d{2,2})/);\
                    145: for ($$y=$$by; $$y<=$$ey; $$y++) {\
                    146:     if ($$y==$$by) {$$m=$$bm;} else {$$m=1;}\
                    147:     if ($$y==$$ey) {$$m2=$$em;} else {$$m2=12;}\
                    148:     for ($$m; $$m<=$$m2; $$m++) {\
                    149: 	printf("$$odate\t%4.4d%2.2d%2.2d\n",$$y,$$m,$$bd) if $$odate; \
                    150: 	$$odate=sprintf("%4.4d%2.2d%2.2d",$$y,$$m,$$bd);\
                    151:     }\
                    152: }' 20000101 `date +"%Y%m%d"` |\
                    153: perl -nle '($$d1,$$d2)=split(/\t/);$$cmt1=`cvs history -D$$d1 -a -xMAR | wc -l`;chomp $$cmt1;$$cmt2=`cvs history -D$$d2 -a -xMAR | wc -l`;chomp $$cmt2;$$cmt=$$cmt1-$$cmt2;$$cmtsum+=$$cmt;print "$$d2\t$$cmt\t$$cmtsum";' > $(STATDIR)/ctable.txt
                    154: 	echo -e 'set xdata time\nset timefmt "%Y%m%d"\nset format x "%b %y"\nset xlabel "time"\nset ylabel "commits"\nset nokey\nset title "Commits\\n(Additions, Deletions, and Modifications)"\nset output "cvsstats/commit.png"\nset term png color\nplot "cvsstats/ctable.txt" using 1:2 with lines' | gnuplot
                    155: 	echo -e 'set xdata time\nset timefmt "%Y%m%d"\nset format x "%b %y"\nset xlabel "time"\nset ylabel "commits"\nset nokey\nset title "Commits\\nAggregate count (Additions, Deletions, and Modifications"\nset output "cvsstats/commitsum.png"\nset term png color\nplot "cvsstats/ctable.txt" using 1:3 with lines' | gnuplot
                    156: 	cd ../..; perl -e ' \
                    157: ($$begindate,$$enddate)=@ARGV;\
                    158: ($$by,$$bm,$$bd)=($$begindate=~/(\d{4,4})(\d{2,2})(\d{2,2})/);\
                    159: ($$ey,$$em,$$ed)=($$enddate=~/(\d{4,4})(\d{2,2})(\d{2,2})/);\
                    160: for ($$y=$$by; $$y<=$$ey; $$y++) {\
                    161:     if ($$y==$$by) {$$m=$$bm;} else {$$m=1;}\
                    162:     if ($$y==$$ey) {$$m2=$$em;} else {$$m2=12;}\
                    163:     for ($$m; $$m<=$$m2; $$m++) {\
                    164: 	printf("$$odate\t%4.4d%2.2d%2.2d\n",$$y,$$m,$$bd) if $$odate; \
                    165: 	$$odate=sprintf("%4.4d%2.2d%2.2d",$$y,$$m,$$bd);\
                    166:     }\
                    167: }' 20000101 `date +"%Y%m%d"` |\
                    168: perl -nle '($$d1,$$d2)=split(/\t/);$$cmt1=`cvs history -D$$d1 -a -xMAR | grep "\.pm[[:space:]]" | wc -l`;chomp $$cmt1;$$cmt2=`cvs history -D$$d2 -a -xMAR | grep "\.pm[[:space:]]" | wc -l`;chomp $$cmt2;$$cmt=$$cmt1-$$cmt2;$$cmtsum+=$$cmt;print "$$d2\t$$cmt\t$$cmtsum";' > $(STATDIR)/ctablepm.txt
                    169: # process counts, generate table
1.1       harris41  170: 	# pass table to gnuplot
1.2       harris41  171: 	echo -e 'set xdata time\nset timefmt "%Y%m%d"\nset format x "%b %y"\nset xlabel "time"\nset ylabel "commits"\nset nokey\nset title "Commits, perl modules\\n(Additions, Deletions, and Modifications)"\nset output "cvsstats/commitpm.png"\nset term png color\nplot "cvsstats/ctablepm.txt" using 1:2 with lines' | gnuplot
                    172: 	echo -e 'set xdata time\nset timefmt "%Y%m%d"\nset format x "%b %y"\nset xlabel "time"\nset ylabel "commits"\nset nokey\nset title "Commits, perl modules\\nAggregate count (Additions, Deletions, and Modifications)"\nset output "cvsstats/commitpmsum.png"\nset term png color\nplot "cvsstats/ctablepm.txt" using 1:3 with lines' | gnuplot
1.1       harris41  173: 
                    174: clean:
                    175: 	rm -Rf cvsstats
                    176: 
                    177: 
                    178: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>