摘要
考慮的Git版本控制下的文件,我想用git內置插件或擊的報告,其中列出了多少次,每次行已經改變。混帳 - 單個文件,次數每行改變
差異,哈希值,作者和其他細節將被丟棄,唯一需要的結果是每行的數字,代表自歷史開始以來的變化量。
該文件保證具有相同的結構和行數,否則該報告將不起作用。
原因
我訓練神經網絡,堅持中間狀態的文件系統。該導出描述系統中每個神經元的連接和權重。
由於文件處於版本控制之下,我想通過查看它們的不穩定性來衡量連接的強度。這種波動可能與連接發生變異的次數有關。一個連接是一條線。
問題我正在考慮git log
,git blame
或兩者的良好的製造組合產生這樣的報告。
我的實際解決方案使用git log
和L
標誌並逐行迭代。雖然這有效,但生成具有數百次提交的1000+ LOC文件的報告非常緩慢。
請參閱下面的代碼段以瞭解我所在的位置。
#!/bin/bash
for ((line=$line_start; line<$line_end; line++)) ; do
lines=$(git log -L ${line},${line}:${file_input} | grep -c "diff")
echo "${line}:${lines}" >> ${file_output}
done
問題
依託VCS - 在這種情況下,Git的 - 什麼是關於執行時間生成一份報告,列出每一行中給定的文件已經被改變的時間量的最佳解決方案?
這很有趣,但非常不平凡的任務。我想到的唯一可行的解決方案是以向後的順序分析差異,這可能是具有挑戰性的,因爲不知道在更改情況下刪除或添加了哪行。 –
https://github.com/ptlis/diff-parser –
這個怎麼樣:'git diff --shortstat' – CodeWizard