废话不多说,先放上几张插件生成的页面的预览图
(页面主页)
(每日提交量)
(代码行数统计,因为是练习项目,很多代码是copy的,不要在意细节)
预览大致就到这里,当然还有很多其他功能,大家可以自己去尝试了解,我这里简单来普及下如何安装和使用这个插件。(win平台运行会存在一些bug,之后也会普及下如何排除这些bug)
首先这个插件的名字叫git_stats,如何去下载安装这个插件呢,输入命令 $ gem install git_stats //就可以了 ,不过这个命令的前提时你安装了ruby,ruby安装很简单,如果你没有安装可以从官网进行下载,顺便附上下载链接:https://www.ruby-lang.org/en/downloads/ (ps:如果本地计算机ruby版本过旧无法安装使用stats的话,请安装最新版本ruby)
当你安装完git_stats的时候,理论上你就可以使用它了,是不是很方便(linux和mac的都是完美适配,win用户还有一个步骤来解决系统问题存在的字符异常),我们用git-bash进入我们想要统计的项目根目录,然后输入命令 git_stats //就会显示你可以运行的命令,这里如果想要生成你的项目统计报告的话,输入git_stats generate 就可以在项目文件夹下生成一个stats文件夹,文件夹里面的index.html打开就是我先前展示的网页了,整个统计过程还算比较快,也可能是我项目比较小的原因?
接下来我来讲一些win用户在使用的过程中存在的一个坑,就是在输入git_stats generate 之后相信大家都会看到一个严重异常,以及生成的index文件无法打开吧,如果问题是:cannot get it working - fatal: |: no such path in the working tree. 那么不要担心,这个问题是因为win和linux的git命令有些微区别导致的,我们只需要改动脚本中的几个小文件就可以了。这个问题在github上有人给出了答案,外语比较好的话可以直接看我提供的地址:https://github.com/tomgi/git_stats/pull/77/files
简单来说就是改动你的git_stats插件中的4个文件,你问我你的这个插件装在哪里?在命令行输入gem environment 就会出来一大串,其中的 - INSTALLATION DIRECTORY: /Library/Ruby/Gems/1.8 就是你的安装路径,点进去,然后改动以下4个文件,
【文件1】lib/git_stats/git_data/comment_stat.rb,28行改成
stat_line = commit.repo.run("git show #{commit.sha} | gawk 'BEGIN {adds=0; dels=0} {if ($0 ~ /^\\+#{escaped_string}/) adds++; if ($0 ~ /^\-#{escaped_string}/) dels++} END {print adds \" insertions \" dels \" deletes\"}'").lines.to_a[0]
【文件2】lib/git_stats/git_data/repo.rb,49行改成
@commits ||= run_and_parse("git rev-list --pretty=format:%h^|%at^|%ai^|%aE #{commit_range} #{tree_path} | grep -v commit").map do |commit_line|
79行后增加
def files_by_extension_count
Hash.new
end
【文件3】lib/git_stats/stats_view/view.rb,31行改成
active_page: "authors/#{author.dirname}/#{template}")
【文件4】spec/command_runner_spec.rb 路径下新建文件
#require 'spec_helper'
require '. b/git_stats/command_runner'
require 'shellwords'
RSpec.describe GitStats::CommandRunner do
let(:runner) { build(:runner) }
describe 'command runner' do
it 'should not treat pipe inside single quotes as a stream operator' do
runner = GitStats::CommandRunner.new
command = "git rev-list --pretty=format:%h^|%at^|%ai^|%aE HEAD . | grep -v commit"
result = runner.run(".",command)
expect(result).to match(/\+.+|.+|.+|.+/)
end
end
end