给定一个SVN存储库url如何找出最感动的文件扩展名。
基本上我想比较JS和C#代码中做了多少更改。
感谢您的想法。
答案 0 :(得分:1)
我提出了这个问题(扩展名是最后一个点之后的任何内容,忽略没有点的路径):
svn log $url -v | grep '^ M \|^ A \|^ D \|^ R ' | grep '\.' | awk -F . '{print $NF}' | sed 's/:.*$//' | sort | uniq -c | sort -bgr
示例输出(限于5次登记):
svn log http://svn.code.sf.net/p/codeblocks/code/trunk/ -v --limit 5 | grep '^ M \|^ A \|^ D \|^ R ' | grep '\.' | awk -F . '{print $NF}' | sed 's/:.*$//' | sort | uniq -c | sort -bgr
20 xpm
20 bmp
19 h
19 cpp
16 cbp
7 am
4 xml
2 wxs
2 rc
2 in
1 xrc
1 workspace
1 m4
1 ac
答案 1 :(得分:0)
我能够使用node.js脚本获取统计信息。
切换到工作副本文件夹并运行以下命令以获取svn更改(在我的情况下为2015年)
svn log -v --xml -r {2015-01-01}:{2015-12-31}> 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');
});
});