Adds a few metrics-based tools and a mailmap
This merge adds four new tools:
* .mailmap : allows for easier identification of committers
* tools/module_count.rb : Spits out a current count of modules
* tools/module_commits.rb: Spits out who commited to a module
* tools/committer_counts.rb : Spits out commiters by commit counts
This was part of a long-running feature branch, which is why it's now
bundled up in one big squash merge.
Squashed commit of the following:
commit de201ff6a5b304d0fedec56d9f1930abf1a10d9e
Author: Tod Beardsley <todb@metasploit.com>
Date: Thu Jan 24 14:48:24 2013 -0600
Rename from scorecard to merely a count
commit 8028cf838b0b560831602e3163e92d0751a4c0a9
Author: Tod Beardsley <todb@metasploit.com>
Date: Thu Jan 24 14:36:42 2013 -0600
Some final comment docs
commit a69fd7883837849664bc8777d119ac760de4a43d
Merge: e288f13 3faf4b3
Author: Tod Beardsley <todb@metasploit.com>
Date: Thu Jan 24 13:21:14 2013 -0600
Merge branch 'master' into committer-scorecard
I think these conflicts came from a move or a rename or something.
Conflicts:
external/source/exploits/cve-2012-5076_2/Makefile
external/source/exploits/cve-2012-5088/Makefile
modules/exploits/multi/browser/java_jre17_method_handle.rb
modules/exploits/multi/http/jenkins_script_console.rb
commit e288f13d7f7bca7aa4ceddd555b88d971a9f65a2
Author: Tod Beardsley <todb@metasploit.com>
Date: Wed Jan 16 14:06:23 2013 -0600
Add FireFart's mail alias
commit 1b1792e84febf015a79c3beb3d2473953da56935
Author: Tod Beardsley <todb@metasploit.com>
Date: Fri Jan 18 22:41:44 2013 -0600
Fix grammar on description for webcam
commit 276388fac541f0eebb9a18a980c5b474f438d117
Author: Robin Wood <robin@digininja.org>
Date: Tue Jan 22 15:42:23 2013 +0000
added extra checking for strict databases
commit a40ea3d73e52ab822cb89052ef7575f7ac52abb6
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Tue Jan 22 12:07:16 2013 +0100
fix data added to table
commit 738d2fad5fccfbff23967ce219ad6bd4af90bbea
Author: HD Moore <hd_moore@rapid7.com>
Date: Tue Jan 22 00:27:03 2013 -0600
Fix a stack overflow in bidirectional pipe
commit aeec5a816b2f09f517930cdff074ea4b42ed5088
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Mon Jan 21 12:26:35 2013 +0100
Cleanup for mysql_file_enum.rb
commit 13f68f089b4f3dd7c58bb4d5cb5767ff3df12852
Author: sinn3r <msfsinn3r@gmail.com>
Date: Mon Jan 21 00:30:43 2013 -0600
Updates the progress function
Because the previous one was wrong.
commit d971fe0bb5f34667b6a621043838f7472e7255cd
Author: Robin Wood <robin@digininja.org>
Date: Sun Jan 20 21:32:02 2013 +0000
Brute force directory and file names with MySQL
commit a96ca2e96a3a34e302a6759ba48706c60b9724cd
Author: Robin Wood <robin@digininja.org>
Date: Sun Jan 20 00:13:42 2013 +0000
added a warning and using optpath
commit aa98d85abbc30166ce7d69a446bf78cddff92e0a
Author: Robin Wood <robin@digininja.org>
Date: Sun Jan 20 00:12:38 2013 +0000
added a warning and using optpath
commit 6dd5bb8532d0f68d44ca80099780428e0a3ad872
Author: Robin Wood <robin@digininja.org>
Date: Sun Jan 20 00:02:07 2013 +0000
stopped using fixed table name
commit 520aeb93119a77b4eb8d1187cac4084690d45613
Author: Robin Wood <robin@digininja.org>
Date: Sat Jan 19 23:41:38 2013 +0000
Fixed msftidy stuff
commit cec6a06c56444f12dc8b8985c2505b2d259d5077
Author: Robin Wood <robin@digininja.org>
Date: Sat Jan 19 22:48:00 2013 +0000
File/dir brute forcer using MySQL
commit 3cc0f3feaed87df11ab3695342af304d3b13d056
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Sun Jan 20 19:54:24 2013 +0100
finally it doesn't use FileDropper atm
commit 2670d5ca8fbe2b26b2073445537bf0bfacd079dd
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Sun Jan 20 17:38:37 2013 +0100
references and date updated
commit 1230d5267b3a8b33cfd64f6efb613986d6d13b31
Author: bcoles <bcoles@gmail.com>
Date: Mon Jan 21 02:12:42 2013 +1030
update php_charts_exec metadata
commit cf37c594e55b0130640f5aaea240b3aa936b7c8d
Author: bcoles <bcoles@gmail.com>
Date: Mon Jan 21 02:10:48 2013 +1030
move and update php_charts_exec metadata
commit 1e86429fa16a2f5d5003fbe6e69a74cac5efd767
Author: bcoles <bcoles@gmail.com>
Date: Sun Jan 20 23:51:17 2013 +1030
Add PHP-Charts v1.0 PHP Code Execution Exploit
commit fe60ee6dffc60a53b28bcfd08b5aada8bc8d4000
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Sun Jan 20 13:42:02 2013 +0100
linux stager plus little cleanup
commit 5900248f585e7a5e10d93a0672aa8d330d5581ee
Author: Spencer McIntyre <zeroSteiner@gmail.com>
Date: Sat Jan 19 19:10:56 2013 -0500
use target_uri and normalize_uri as well as fix a cookie problem
commit a7ce0a500fe1ae4c71652191ee97ba1757cf65e0
Author: Spencer McIntyre <zeroSteiner@gmail.com>
Date: Fri Jan 18 14:56:52 2013 -0500
add module to execute commands via Jenkins Script Console
commit 33b8aa49f4dbbfbcc275b5cc0dfc43db9fec08f8
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Fri Jan 18 18:42:27 2013 +0100
title updated
commit 63fe457fadf66ac27eac6210a26880c1f816d0ce
Author: Charles Smith <charles.smith@n2netsec.com>
Date: Thu Jan 17 16:52:02 2013 -0500
Fixed loot formatting so data is under the proper column
The credentials table was defined with the columns "User", "Password", "Host", "Port", and "SSL". Credentials were not added in that order, however. They were added in the order "host, port, user, password, ssl" in this line:
credentials << [cred['host'], cred['port'], cred['user'], cred['password'], cred['ssl']]
I changed the order the columns were defined to fix this.
The permissions table had a similar issue. The "FileWrite" column was missing, so I added it. I also moved the "Home" column to after the "AutoCreate" column. Now the line:
permissions << [perm['host'], perm['user'], perm['dir'], perm['fileread'], perm['filewrite'], perm['filedelete'], perm['fileappend'],perm['dircreate'], perm['dirdelete'], perm['dirlist'], perm['dirsubdirs'], perm['autocreate']]
works correctly.
commit b948559b5ae0090c9ecb704bfba2da219577d4f4
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Thu Jan 17 21:45:13 2013 +0100
cleanup
commit 199ab00a9c46295776b3f9c47d941721d5777a65
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Thu Jan 17 21:39:41 2013 +0100
cleanup
commit 8d5504475dbce315581e87f395c9453bbe624d2e
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Thu Jan 17 21:27:47 2013 +0100
Added new module for cve-2012-5076
commit 31ae18f392dea9fcfc4e1e6e1ec627aed2513d09
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Thu Jan 17 21:14:49 2013 +0100
Added module for CVE-2012-5088
commit 6ac99f3db8f464767d15aaf60a2a5796b4ae8b30
Author: Tod Beardsley <todb@metasploit.com>
Date: Sat Jan 19 09:08:31 2013 -0600
Add a quick comment doc
commit 0c18f1c7cb53a77b4338e6014b76ea74749b41f9
Author: Tod Beardsley <todb@metasploit.com>
Date: Sat Jan 19 09:06:34 2013 -0600
Adds a per-module commit counter.
commit 44fa22832bb2e229f5a96a62658d7c4b0b88b966
Merge: fa288ff 9f42abd
Author: Tod Beardsley <todb@metasploit.com>
Date: Sat Jan 19 08:30:37 2013 -0600
Merge remote-tracking branch 'origin/master' into committer-scorecard
commit fa288ff007c1ead48ca011cda2488164d5103715
Author: Tod Beardsley <todb@metasploit.com>
Date: Fri Jan 18 14:05:47 2013 -0600
Make module_count execable
commit 6c1625ed709f505ec9e8be89820f9d6827a52567
Author: Tod Beardsley <todb@metasploit.com>
Date: Tue Jan 8 09:56:48 2013 -0600
Wrote a quick module counter, by type
commit af07ddc8184b85ecd43fb9e2cb2c607d54fb0c1b
Merge: 2ee5df8 2c3ccb5
Author: Tod Beardsley <todb@metasploit.com>
Date: Tue Jan 8 09:35:28 2013 -0600
Merge remote-tracking branch 'origin/master' into committer-scorecard
commit 2ee5df810313290a753344b83a9b9e591c30ef05
Merge: 501c678 b50e040
Author: Tod Beardsley <todb@metasploit.com>
Date: Fri Jan 4 10:24:27 2013 -0600
Merge remote-tracking branch 'origin/master' into committer-scorecard
commit 501c678b2ca6f67639d7d7425469d380ba6534cf
Merge: 8001401 c2586d0
Author: Tod Beardsley <todb@metasploit.com>
Date: Thu Dec 27 15:42:25 2012 -0600
Merge branch 'master' into committer-scorecard
commit 800140176686c8aa4e41629b259a1bcb8b7c9e0c
Author: Tod Beardsley <todb@metasploit.com>
Date: Thu Dec 27 11:13:04 2012 -0600
Adding shuckins and cjr to the mailmap
commit ab2db49c17b78616dc9199d62928e65d624e9e12
Merge: 8b6ecb3 daf5465
Author: Tod Beardsley <todb@metasploit.com>
Date: Thu Dec 27 10:29:19 2012 -0600
Merge remote branch 'origin/master' into committer-scorecard
commit 8b6ecb34bd2a1719bc51ab136cb9de1a8cd5c782
Author: Tod Beardsley <todb@metasploit.com>
Date: Mon Dec 17 21:58:37 2012 -0600
Comment docs on .mailmap
commit 8e245a086c2e91a80be31accdb6349837cba3dff
Author: Tod Beardsley <todb@metasploit.com>
Date: Mon Dec 17 21:56:06 2012 -0600
Another alias for h0ng10
commit aff6169602791a048cff2e41bac5cbb565abd341
Author: Tod Beardsley <todb@metasploit.com>
Date: Mon Dec 17 17:02:35 2012 -0600
A more useful committer score card
Now with aliases for anyone who hit the top 20 list of the last year,
six months, and twelve weeks.
Still needs some optparsey niceities, but it's good enough for an
intial push to GitHub.
commit bd4e00ee019cedfed2eb8af6b52786f5184193ca
Author: Tod Beardsley <todb@metasploit.com>
Date: Mon Dec 17 15:22:33 2012 -0600
Initial commit of a git commit scorecard
2013-01-24 21:56:28 +01:00
|
|
|
#!/usr/bin/env ruby
|
|
|
|
|
|
|
|
# Check the commit history of a module or tree of modules.
|
|
|
|
# and sort by number of commits.
|
|
|
|
#
|
|
|
|
# Usage: tools/module_commits.rb [module dir | module fname]
|
|
|
|
|
|
|
|
require 'find'
|
|
|
|
|
|
|
|
class GitLogLine < Struct.new(:date, :hash, :author, :message)
|
|
|
|
end
|
|
|
|
|
|
|
|
class CommitHistory < Struct.new(:fname, :total, :authors)
|
|
|
|
end
|
|
|
|
|
|
|
|
msfbase = __FILE__
|
|
|
|
while File.symlink?(msfbase)
|
2013-09-30 20:47:53 +02:00
|
|
|
msfbase = File.expand_path(File.readlink(msfbase), File.dirname(msfbase))
|
Adds a few metrics-based tools and a mailmap
This merge adds four new tools:
* .mailmap : allows for easier identification of committers
* tools/module_count.rb : Spits out a current count of modules
* tools/module_commits.rb: Spits out who commited to a module
* tools/committer_counts.rb : Spits out commiters by commit counts
This was part of a long-running feature branch, which is why it's now
bundled up in one big squash merge.
Squashed commit of the following:
commit de201ff6a5b304d0fedec56d9f1930abf1a10d9e
Author: Tod Beardsley <todb@metasploit.com>
Date: Thu Jan 24 14:48:24 2013 -0600
Rename from scorecard to merely a count
commit 8028cf838b0b560831602e3163e92d0751a4c0a9
Author: Tod Beardsley <todb@metasploit.com>
Date: Thu Jan 24 14:36:42 2013 -0600
Some final comment docs
commit a69fd7883837849664bc8777d119ac760de4a43d
Merge: e288f13 3faf4b3
Author: Tod Beardsley <todb@metasploit.com>
Date: Thu Jan 24 13:21:14 2013 -0600
Merge branch 'master' into committer-scorecard
I think these conflicts came from a move or a rename or something.
Conflicts:
external/source/exploits/cve-2012-5076_2/Makefile
external/source/exploits/cve-2012-5088/Makefile
modules/exploits/multi/browser/java_jre17_method_handle.rb
modules/exploits/multi/http/jenkins_script_console.rb
commit e288f13d7f7bca7aa4ceddd555b88d971a9f65a2
Author: Tod Beardsley <todb@metasploit.com>
Date: Wed Jan 16 14:06:23 2013 -0600
Add FireFart's mail alias
commit 1b1792e84febf015a79c3beb3d2473953da56935
Author: Tod Beardsley <todb@metasploit.com>
Date: Fri Jan 18 22:41:44 2013 -0600
Fix grammar on description for webcam
commit 276388fac541f0eebb9a18a980c5b474f438d117
Author: Robin Wood <robin@digininja.org>
Date: Tue Jan 22 15:42:23 2013 +0000
added extra checking for strict databases
commit a40ea3d73e52ab822cb89052ef7575f7ac52abb6
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Tue Jan 22 12:07:16 2013 +0100
fix data added to table
commit 738d2fad5fccfbff23967ce219ad6bd4af90bbea
Author: HD Moore <hd_moore@rapid7.com>
Date: Tue Jan 22 00:27:03 2013 -0600
Fix a stack overflow in bidirectional pipe
commit aeec5a816b2f09f517930cdff074ea4b42ed5088
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Mon Jan 21 12:26:35 2013 +0100
Cleanup for mysql_file_enum.rb
commit 13f68f089b4f3dd7c58bb4d5cb5767ff3df12852
Author: sinn3r <msfsinn3r@gmail.com>
Date: Mon Jan 21 00:30:43 2013 -0600
Updates the progress function
Because the previous one was wrong.
commit d971fe0bb5f34667b6a621043838f7472e7255cd
Author: Robin Wood <robin@digininja.org>
Date: Sun Jan 20 21:32:02 2013 +0000
Brute force directory and file names with MySQL
commit a96ca2e96a3a34e302a6759ba48706c60b9724cd
Author: Robin Wood <robin@digininja.org>
Date: Sun Jan 20 00:13:42 2013 +0000
added a warning and using optpath
commit aa98d85abbc30166ce7d69a446bf78cddff92e0a
Author: Robin Wood <robin@digininja.org>
Date: Sun Jan 20 00:12:38 2013 +0000
added a warning and using optpath
commit 6dd5bb8532d0f68d44ca80099780428e0a3ad872
Author: Robin Wood <robin@digininja.org>
Date: Sun Jan 20 00:02:07 2013 +0000
stopped using fixed table name
commit 520aeb93119a77b4eb8d1187cac4084690d45613
Author: Robin Wood <robin@digininja.org>
Date: Sat Jan 19 23:41:38 2013 +0000
Fixed msftidy stuff
commit cec6a06c56444f12dc8b8985c2505b2d259d5077
Author: Robin Wood <robin@digininja.org>
Date: Sat Jan 19 22:48:00 2013 +0000
File/dir brute forcer using MySQL
commit 3cc0f3feaed87df11ab3695342af304d3b13d056
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Sun Jan 20 19:54:24 2013 +0100
finally it doesn't use FileDropper atm
commit 2670d5ca8fbe2b26b2073445537bf0bfacd079dd
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Sun Jan 20 17:38:37 2013 +0100
references and date updated
commit 1230d5267b3a8b33cfd64f6efb613986d6d13b31
Author: bcoles <bcoles@gmail.com>
Date: Mon Jan 21 02:12:42 2013 +1030
update php_charts_exec metadata
commit cf37c594e55b0130640f5aaea240b3aa936b7c8d
Author: bcoles <bcoles@gmail.com>
Date: Mon Jan 21 02:10:48 2013 +1030
move and update php_charts_exec metadata
commit 1e86429fa16a2f5d5003fbe6e69a74cac5efd767
Author: bcoles <bcoles@gmail.com>
Date: Sun Jan 20 23:51:17 2013 +1030
Add PHP-Charts v1.0 PHP Code Execution Exploit
commit fe60ee6dffc60a53b28bcfd08b5aada8bc8d4000
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Sun Jan 20 13:42:02 2013 +0100
linux stager plus little cleanup
commit 5900248f585e7a5e10d93a0672aa8d330d5581ee
Author: Spencer McIntyre <zeroSteiner@gmail.com>
Date: Sat Jan 19 19:10:56 2013 -0500
use target_uri and normalize_uri as well as fix a cookie problem
commit a7ce0a500fe1ae4c71652191ee97ba1757cf65e0
Author: Spencer McIntyre <zeroSteiner@gmail.com>
Date: Fri Jan 18 14:56:52 2013 -0500
add module to execute commands via Jenkins Script Console
commit 33b8aa49f4dbbfbcc275b5cc0dfc43db9fec08f8
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Fri Jan 18 18:42:27 2013 +0100
title updated
commit 63fe457fadf66ac27eac6210a26880c1f816d0ce
Author: Charles Smith <charles.smith@n2netsec.com>
Date: Thu Jan 17 16:52:02 2013 -0500
Fixed loot formatting so data is under the proper column
The credentials table was defined with the columns "User", "Password", "Host", "Port", and "SSL". Credentials were not added in that order, however. They were added in the order "host, port, user, password, ssl" in this line:
credentials << [cred['host'], cred['port'], cred['user'], cred['password'], cred['ssl']]
I changed the order the columns were defined to fix this.
The permissions table had a similar issue. The "FileWrite" column was missing, so I added it. I also moved the "Home" column to after the "AutoCreate" column. Now the line:
permissions << [perm['host'], perm['user'], perm['dir'], perm['fileread'], perm['filewrite'], perm['filedelete'], perm['fileappend'],perm['dircreate'], perm['dirdelete'], perm['dirlist'], perm['dirsubdirs'], perm['autocreate']]
works correctly.
commit b948559b5ae0090c9ecb704bfba2da219577d4f4
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Thu Jan 17 21:45:13 2013 +0100
cleanup
commit 199ab00a9c46295776b3f9c47d941721d5777a65
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Thu Jan 17 21:39:41 2013 +0100
cleanup
commit 8d5504475dbce315581e87f395c9453bbe624d2e
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Thu Jan 17 21:27:47 2013 +0100
Added new module for cve-2012-5076
commit 31ae18f392dea9fcfc4e1e6e1ec627aed2513d09
Author: jvazquez-r7 <juan.vazquez@metasploit.com>
Date: Thu Jan 17 21:14:49 2013 +0100
Added module for CVE-2012-5088
commit 6ac99f3db8f464767d15aaf60a2a5796b4ae8b30
Author: Tod Beardsley <todb@metasploit.com>
Date: Sat Jan 19 09:08:31 2013 -0600
Add a quick comment doc
commit 0c18f1c7cb53a77b4338e6014b76ea74749b41f9
Author: Tod Beardsley <todb@metasploit.com>
Date: Sat Jan 19 09:06:34 2013 -0600
Adds a per-module commit counter.
commit 44fa22832bb2e229f5a96a62658d7c4b0b88b966
Merge: fa288ff 9f42abd
Author: Tod Beardsley <todb@metasploit.com>
Date: Sat Jan 19 08:30:37 2013 -0600
Merge remote-tracking branch 'origin/master' into committer-scorecard
commit fa288ff007c1ead48ca011cda2488164d5103715
Author: Tod Beardsley <todb@metasploit.com>
Date: Fri Jan 18 14:05:47 2013 -0600
Make module_count execable
commit 6c1625ed709f505ec9e8be89820f9d6827a52567
Author: Tod Beardsley <todb@metasploit.com>
Date: Tue Jan 8 09:56:48 2013 -0600
Wrote a quick module counter, by type
commit af07ddc8184b85ecd43fb9e2cb2c607d54fb0c1b
Merge: 2ee5df8 2c3ccb5
Author: Tod Beardsley <todb@metasploit.com>
Date: Tue Jan 8 09:35:28 2013 -0600
Merge remote-tracking branch 'origin/master' into committer-scorecard
commit 2ee5df810313290a753344b83a9b9e591c30ef05
Merge: 501c678 b50e040
Author: Tod Beardsley <todb@metasploit.com>
Date: Fri Jan 4 10:24:27 2013 -0600
Merge remote-tracking branch 'origin/master' into committer-scorecard
commit 501c678b2ca6f67639d7d7425469d380ba6534cf
Merge: 8001401 c2586d0
Author: Tod Beardsley <todb@metasploit.com>
Date: Thu Dec 27 15:42:25 2012 -0600
Merge branch 'master' into committer-scorecard
commit 800140176686c8aa4e41629b259a1bcb8b7c9e0c
Author: Tod Beardsley <todb@metasploit.com>
Date: Thu Dec 27 11:13:04 2012 -0600
Adding shuckins and cjr to the mailmap
commit ab2db49c17b78616dc9199d62928e65d624e9e12
Merge: 8b6ecb3 daf5465
Author: Tod Beardsley <todb@metasploit.com>
Date: Thu Dec 27 10:29:19 2012 -0600
Merge remote branch 'origin/master' into committer-scorecard
commit 8b6ecb34bd2a1719bc51ab136cb9de1a8cd5c782
Author: Tod Beardsley <todb@metasploit.com>
Date: Mon Dec 17 21:58:37 2012 -0600
Comment docs on .mailmap
commit 8e245a086c2e91a80be31accdb6349837cba3dff
Author: Tod Beardsley <todb@metasploit.com>
Date: Mon Dec 17 21:56:06 2012 -0600
Another alias for h0ng10
commit aff6169602791a048cff2e41bac5cbb565abd341
Author: Tod Beardsley <todb@metasploit.com>
Date: Mon Dec 17 17:02:35 2012 -0600
A more useful committer score card
Now with aliases for anyone who hit the top 20 list of the last year,
six months, and twelve weeks.
Still needs some optparsey niceities, but it's good enough for an
intial push to GitHub.
commit bd4e00ee019cedfed2eb8af6b52786f5184193ca
Author: Tod Beardsley <todb@metasploit.com>
Date: Mon Dec 17 15:22:33 2012 -0600
Initial commit of a git commit scorecard
2013-01-24 21:56:28 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
dir = ARGV[0] || File.join(msfbase, "modules", "exploits")
|
|
|
|
raise ArgumentError, "Need a filename or directory" unless (dir and File.readable? dir)
|
|
|
|
|
|
|
|
def check_commit_history(fname)
|
|
|
|
|
|
|
|
git_cmd = `git log --pretty=format:"%ad %h '%aN' %f" --date=short --date-order #{fname}`
|
|
|
|
commit_history = []
|
|
|
|
commits_by_author = {}
|
|
|
|
|
|
|
|
git_cmd.each_line do |line|
|
|
|
|
parsed_line = line.match(/^([^\s+]+)\s(.{7,})\s'(.*)'\s(.*)[\r\n]*$/)
|
|
|
|
commit_history << GitLogLine.new(*parsed_line[1,4])
|
|
|
|
end
|
|
|
|
|
|
|
|
commit_history.each do |logline|
|
|
|
|
commits_by_author[logline.author] ||= []
|
|
|
|
commits_by_author[logline.author] << logline.message
|
|
|
|
end
|
|
|
|
|
|
|
|
puts "Commits for #{fname} #{commit_history.size}"
|
|
|
|
puts "-" * 72
|
|
|
|
|
|
|
|
commits_by_author.sort_by {|k,v| v.size}.reverse.each do |k,v|
|
|
|
|
puts "%-25s %3d" % [k,v.size]
|
|
|
|
end
|
|
|
|
|
|
|
|
this_module = CommitHistory.new(fname,commit_history.size,commits_by_author)
|
|
|
|
return this_module
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
@module_stats = []
|
|
|
|
|
|
|
|
Find.find(dir) do |fname|
|
|
|
|
next unless fname =~ /rb$/
|
|
|
|
@module_stats << check_commit_history(fname)
|
|
|
|
end
|
|
|
|
|
|
|
|
puts "=" * 72
|
|
|
|
puts "Sorted modules by commit counts"
|
|
|
|
|
|
|
|
@module_stats.sort_by {|m| m.total }.reverse.each do |m|
|
|
|
|
puts "%-60s %d" % [m.fname, m.total]
|
|
|
|
end
|