サイトアイコン PEOPLE Engineering Blog

[Git]Git管理しているプロジェクトの差分ファイルを出力したい

こんにちは。ともはるです。

突然ですが、SEのみなさんはプロジェクトのファイル資産をどのように作成しているでしょうか。
プロジェクトのファイル資産を作成するときに、プログラムを書いたソースやSQLなどを1ファイルずつ探してフォルダにまとめる場合、プロジェクトの規模によってはとても時間を要すると思います。
gitで管理しているプロジェクトで簡単に差分のファイルを出力する方法があるので、今回はそれについて紹介します。

差分ファイルの取得方法

手順としては下記の流れになります。
1.gitからコーディング着手前のブランチからのコミット数を数える。
2.コーディングを行った差分ファイルを取得する。

1.gitからコーディング着手前のブランチからのコミット数を数える。

コーディングに着手して何回コミットしたかを数えます。
コミット回数は後続にある差分ファイルの取得に利用しますが、代わりに着手前後のコミットIDを取得しても問題ないです。

2.コーディングを行った差分ファイルを取得する。

gitのコマンドを使って差分のファイルを取得します。
コマンドは以下になります。コミットIDを取得した場合はHEADに着手後のコミットID、HEAD~に着手前のコミットIDを指定してください。

// 1つ前のブランチから、現在のブランチとの差分を取得するコマンド
// HEADは現在のコミット、HEAD~は1つ前のコミットを表している(2つ前はHEAD~~)
git archive HEAD `git diff --name-only HEAD HEAD~` -o archive.zip

git archiveはアーカイブファイルを取得するコマンドでHEADを指定することで、最新のブランチのアーカイブファイルを作成しています。
git diff --name-only HEAD HEAD~HEAD(最新)からHEAD~(1つ前のコミット)までに差分があるファイル名を出力しています。
これにより、差分ファイルのアーカイブが出力されることで、簡単にプロジェクトの資産を取得することが出来ます。

おまけ:ステップ数のカウント

コーディングに関わっている方はステップ数という言葉に見覚えがあるのではないでしょうか。
ステップ数はシステムの規模を表す指標であり、簡単に言えばどれだけプログラムに手を加えたかということですね。ステップ数の計測方法は色々ありますが今回は差分ファイルを使ったステップ数の計測方法を紹介します。

今回の差分ファイルの出力とステップ数をカウントするソフトかぞえチャオを使ってステップ数をカウントします。手順としては下記の通りです。

1.gitからコーディングを行った差分ファイルの変更前、変更後ファイルを取得する。
2.かぞえチャオに差分ファイルを追加する。

1.gitからコーディングを行った差分ファイルの変更前、変更後ファイルを取得する。

変更後ファイルは上で紹介したように下記のコマンドで取得します。

git archive HEAD `git diff --name-only HEAD HEAD~` -o after.zip

また、変更前ファイルも変更前と同じくgit archiveで取得します。
コマンドは以下になります。

git archive HEAD~ `git diff --name-only --diff-filter=ACMR HEAD HEAD~` -o before.zip

--diff-filter=ACMRは指定した変更を差分に含める設定で、削除されたファイルのみ除外しています。

2.かぞえチャオに差分ファイルを追加する。

1.で出力したファイルを解凍し、ステップ数のカウントを行うため、変更前ファイル、変更後ファイルをドラッグ&ドロップします。

その後、上のステップ比較のボタンを押下すると下記の画像のように、変更前ファイルと変更後ファイルの差分が表示されます。

ここからプロジェクトにおける変更したコード数を集計することでステップ数を求めることが出来ます。

最後に

今回紹介したやり方はチーム内の先輩に教えていただいた方法で、それまで手動で差分ファイルを引っ張っていたのでとても重宝しています笑
おまけのステップ数カウントについては、ファイル出力などせずに計測できるclocソフトもあるのでよければ調べてみてください。
それでは失礼しました。

モバイルバージョンを終了