2012年7月8日日曜日

「Gitポケットリファレンス」でOSSコントリビュート

Gitポケットリファレンス


こちらの書籍を著者様よりいただきました。誠にありがとうございます。


Amazon内容紹介より「Gitポケットリファレンス
本書は、人気のバージョン管理システムとGitの使い方について、目的別に紹介したリファレンス書です。書式・使い方はもちろん、エラーメッセージとその対処法も詳しく紹介しており、初めてのユーザがGitを使うためのガイダンスはもちろん、現場の「困った」にも丁寧に応えています。さらにGitを拡張するサブコマンドの使い方、ブランチ・ディレクトリごとのアクセス制御、ソーシャルコーディングサービスGithubの使い方まで解説した、現場でGitを利用する方の強い味方となる1冊です。

本書は「リファレンス」なので、gitコマンドの利用方法について、各種オプションの解説や使い方が詳細に解説してあります。しかしそれだけでは無く、gitの概念や状況に応じた運用のベストプラクティスについても解説があり、既にgitを使っている方だけでなく、これからgitを使って開発を行おうという方にも有益な一冊であると思います。

特にgit blameコマンドは変更サマリと一緒にコードを眺めることができるので、変更を追う上では大変有用です。

Emacsからgit blameしてコードを眺めている図

【設定方法】
# git clone https://github.com/mbunkus/mo-git-blame.git
# mv mo-git-blame load-path-dir
(require 'mo-git-blame)

; 横幅の調整
(setq mo-git-blame-blame-window-width 80)

; blame表示にサマリも一緒に表示する  
(defun mo-git-blame-process-filter-process-entry (entry)
  (with-current-buffer (plist-get mo-git-blame-vars :blame-buffer)
    (save-excursion
      (let ((inhibit-read-only t)
            (info (format "%s (%-8s %s %s) %s"
                          (substring (symbol-name (plist-get entry :hash)) 0 8)
                          (let ((author (plist-get entry :author))) (substring author 0 (min 8 (length author))))
                          (format-time-string "%y-%m-%d %T" (mo-git-blame-commit-info-to-time entry) t)
                          (plist-get entry :author-tz)
                          (plist-get entry :summary)))
            i)
        (mo-git-blame-goto-line-markless (plist-get entry :result-line))
        (dotimes (i (plist-get entry :num-lines))
          (insert info)
          (goto-char (line-beginning-position 2)))))))

; ソースを開いた状態でC-c Gでblameするキーバインド
(global-set-key "\C-cG" 'mo-git-blame-current)
参考:http://d.hatena.ne.jp/mechairoi/20110905/1315225410


最近よく関わっているOpenStackでは開発にgithubを使っていたので、私もgitを使い始めました。まだまだ初心者の域を出ておりませんので本書をどんどん活用させていただきます。本当にありがとうございました。

また著者様の一人が以前に日本OpenStackユーザ会のセミナーで、OpenStackを例にgithubを使ったOSS開発の流れを講演していただいております。
その際の資料も有用ですので以下にリンクを掲載しておきます。

http://openstack.jp/assets/files/20120201/opsta-github-hundson20120201-120201161514-phpapp02.pdf
Opsta github-hundson 20120201
View more presentations from Takashi Okamoto

0 件のコメント:

コメントを投稿