廢話不多說,先放上幾張插件生成的頁面的預覽圖
(頁面主頁)
(每日提交量)
(代碼行數統計,因為是練習項目,很多代碼是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 '.

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