gitのサブコマンドを自分で作る

2013/12/12 | 所要時間 約3分

この記事はGit Advent Calendar 2013の12日目の記事です.
前日は@sonotsさんのgit current-branch, git fetch-pulls, git pull-dry-run など git alias ネタでした.

gitはコマンドを実行するとき,まずgit --exec-pathのパスの中からコマンドを探し,なければユーザーのPATHの中からコマンドを探して実行します.

$ git --exec-path
/usr/lib/git-core

そのためPATHの通った場所にgit-コマンド名という実行ファイルを置くだけでユーザーが自由にサブコマンドを作れる便利な仕組みとなっています.

ということで,pythonでgitのサブコマンドを作ってみました.

git-ls-date

ton1517/git-ls-date

このサブコマンドはファイルを最初にコミットした日付と最後にコミットした日付(とそのハッシュ)を表示するコマンドです.

... 続きを読む

git logでマージコミットの中の変更を表示する

2013/11/11 | 所要時間 約2分

git

git logを実行するとコミット履歴が見れて、オプションによっては各コミット毎にどのファイルが変更されたのかが見れたりする。

例えば、

$git log --name-only

を実行すれば、各コミット毎に、変更されたファイルが表示される。こんな感じ。

commit 338d9dde08a13d981e8fd71a973f793be372078d
Author: ton <tonton1517@gmail.com>
Date:   Mon Nov 11 18:38:20 2013 +0900

    initial commit.

README

しかし、マージコミットの中にdiffがあると、これが表示されない。以下再現と解決策。

... 続きを読む