私はGITリポジトリを持っており、一定期間の間に1人または複数の人によって追加または変更されたコードの行数を計算したい。 gitで計算することは可能ですか?Git:追加された/変更されたコード行に関して、プロジェクトへの人の貢献度を見積もる方法は?
答えて
あなたはgit log
といくつかのシェル-FUを使用することができますもあります:
git log --shortstat --author "Aviv Ben-Yosef" --since "2 weeks ago" --until "1 week ago" \
| grep "files\? changed" \
| awk '{files+=$1; inserted+=$4; deleted+=$6} END \
{print "files changed", files, "lines inserted:", inserted, "lines deleted:", deleted}'
説明:それぞれについてgit log --shortstat
ディスプレイ短い統計がコミット、とりわけ、数を示し、変更されたファイル、挿入された行、削除された行特定のコミッター(--author "Your Name"
)と時間範囲(--since "2 weeks ago" --until "1 week ago"
)のためにフィルターをかけることができます。
コミットごとのエントリを見るのではなく、実際に統計を集計するために、シェルスクリプトを使ってそれを行います。まず、grep
を使用して、差分を含む行のみをフィルタリングします。
8 files changed, 169 insertions(+), 81 deletions(-)
またはこの:これらの行は次のようになり
1 file changed, 4 insertions(+), 4 deletions(-)
私たちは、その後、awk
を使用して、これらを合計:各ラインのために私たちは、ファイルは、(1ワード目)を変更、挿入行(第四の単語)と追加します削除された行(6番目の単語)を削除し、すべてを合計した後に印刷します。
編集:スニペットの先頭にスラッシュが追加されているため、コピーしてコマンドラインに貼り付けることができます。特定の日付の
間に= --authorと--sinceと--until –
ありがとう!私はこれをちょっと微調整してシェル機能を作りました。 https://gist.github.com/pstadler/4722416 – pstadler
これは、挿入がある限り有効です。削除のみがある場合、挿入としてカウントされます。なぜなら、「8ファイルが変更され、81削除が削除される」という4番目の単語が挿入ではなく削除されるからです。 –
Gitstatsを使用して統計情報を生成できます。それには、上位20人の著者が追加/削除した行の数(コミット数で上位20行)を含む「Authors」セクションがあります。
、あなたは "2012年9月1日"
と同様にgitのログ--shortstat --author --until "2012年8月27日" --since使用することができます"ファビアン" - "2012-08-27"から--until "2012-09-01" | grep "ファイルが変更されました" awk '{ファイル+ = $ 1; + = $ 4を挿入しました。 + = $ 6} END {プリント "変更されたファイル"、ファイル、 "挿入行:" 削除、 挿入し、 "削除された行を:"、}削除」
チェックこの説明
Atlassian's Fisheye/CrucibleをGit(他のコードreposと同様)と統合できます。 LOCを含む全員の貢献は、簡単に読めるウェブアプリに一般公開されています。小グループの方もかなり安いです。
情報を公開し、それ自体について発言させてください。
を実行し、このコマンド:
git log --pretty=format:'' --numstat --author 'Lu4' | awk 'NF' | awk '{insertions+=$1; deletions+=$2} END {print NR, "files changed,", insertions, "insertions(+),", deletions, "deletions(+)"}';
このコマンドは、abyx's answerで巧妙なものに非常に近いですが、それはまた、Wallace Sidhréeで見つかったエッジケースを処理します。時には、コミットには削除のみが含まれます(つまり、挿入されません)。 abyx's answerのコマンドは、これらの削除を挿入と誤って読み取ります。ここでのコマンドは、--shortstat
の代わりに--numstat
を使用するため、正しく読み取ります。 --shortstat
とは異なり、--numstat
には、それらのコミットの挿入と削除の両方が含まれています。
両方のコマンドにはファイル数にバイナリファイルが含まれていますが、それらのバイナリ内に挿入され削除された行数は除外されています。
これは別の便利なトリックです。このコンテンツをgitstats
というファイルを作成します。
#!/usr/bin/env bash
git log --pretty=format:'' --numstat "[email protected]" | awk 'NF' | awk '{insertions+=$1; deletions+=$2} END {print NR, "files changed,", insertions, "insertions(+),", deletions, "deletions(+)"}';
が次にあなたが欲しいgit log
に余分なオプションを指定して、そのコマンドを実行することができます。ここではいくつかの例は以下のとおりです。
./gitstats;
./gitstats --since '1 month ago';
./gitstats --since '1 month ago' --until '1 day ago';
./gitstats --author 'Lu4' --since '1 month ago' --until '1 day ago';
(ファイルはもちろん、gitstats
以外の名前を付けることができます。)
- 1. 角度コンパイラへの貢献
- 2. Pythonに貢献する:git /クローンコードまたはインストールされたコードを編集しますか?
- 3. gitリポジトリへの完全貢献
- 4. Git/GitHubアカウントに貢献した行の総数
- 5. マイナーな変更で他の人の貢献をマージする
- 6. バイオインフォマティクスオープンソースツールへの貢献
- 7. 失敗したテストケースへの貢献方法
- 8. ユーザー貢献度システム
- 9. ファイル名が変更された(削除され、追加された)git変更の取り消し
- 10. Eclipseのメニューへの貢献
- 11. なぜGithub Gistの貢献はGithubの貢献に反映されていないのですか?
- 12. git diffを使って追加された行を変更する方法はありますか?
- 13. 私はLinuxカーネルに貢献したい
- 14. 他のGitの貢献者にSQLの変更を知らせる
- 15. Gitはすべてのコード行が変更されたとみなします
- 16. PYQT動的に追加されたコントロールへのアクセスと変更
- 17. 更新していないGem-Gemへの貢献
- 18. jqueryのサイズ変更ウィンドウのクリックイベントが何度も追加され、
- 19. gitのステージングされた変更とunstagedされた変更を迅速に元に戻す方法は?
- 20. クリックされた要素に追加された行の数を見つける
- 21. gitに変更されていないファイルを追加する
- 22. pybossaのユーザー貢献度を取得
- 23. 寄稿者リストに表示されないブランチへのPR貢献者
- 24. データセットに追加された行を変更する
- 25. GIT - フォークされた変更/プルリクエストをテストする方法は?
- 26. gitコミットの範囲から追加され更新された行番号のリストを取得するには?
- 27. bitbucketからgithubへの貢献度をインポート
- 28. 変更されたファイルパスをgitログに表示する方法
- 29. Gitは新しいファイルのみを追加します。変更されたファイルは追加しません
- 30. クリアされたPersistentCollectionへの変更をキャッチする方法は?
HTTPを参照してください、ところで「パフォーマンス」を推定するためにこれを使用しないでください://ブログ.msdn.com/b/oldnewthing/archive/2010/11/16/10091537.aspx – ismail
ご意見ありがとうございます。私はこのタイプの測定で人の給与を測定するつもりはありませんでした。これは人の仕事の全体像を持つために行われ、誰も私が1つのことをしていることを知ることはありません – Lu4
これは線のサイズではなく、使い方です。 – ingyhere