Skip to content

Instantly share code, notes, and snippets.

@vicneanschi
Created December 9, 2015 14:34
Show Gist options
  • Save vicneanschi/91115ecd2a4f7c65469b to your computer and use it in GitHub Desktop.
Save vicneanschi/91115ecd2a4f7c65469b to your computer and use it in GitHub Desktop.
Parse svn history to generate stats reports
// get svn log file first:
// svn log -v --xml -r {2015-01-01}:{2015-12-08} > svn.log
var fs = require('fs'),
xml2js = require('xml2js'),
_ = require('lodash'),
path = require('path');
var parser = new xml2js.Parser();
fs.readFile(__dirname + '/svn.log', function(err, data) {
if (err) {
console.log('Error reading: ', err);
}
parser.parseString(data, function (err, result) {
if (err) {
console.log('Error parsing: ', err);
return;
}
var paths = _.reduce(result.log.logentry, function(result, n, key) {
var revisionPaths = _.map(n.paths[0].path, '_');
result = result.concat(revisionPaths);
return result;
}, []);
var statsByExtension = _.groupBy(paths, function(p) {
return path.extname(p);
});
statsByExtension = _.map(statsByExtension, function(value, index){
return {ext: index, count: value.length};
});
statsByExtension = _.sortByOrder(statsByExtension, ['count'], ['desc']);
_.forEach(statsByExtension, function(value, key){
console.log(value.ext, ' : ', value.count);
});
console.log('Done');
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment