明日から3月です。春です。春といえば出会いと別れの季節。「出会い(merge)」と「別れ(branch)」を初心者でも効率よく行うために、グラフィカルなインターフェースを備えたGit/Bazaarクライアントをいくつかご紹介します。
Gitクライアント
Gitは世界でもっとも使われている分散型バージョン管理システムです。Recipeの読者であれば、LinuxカーネルやGitHubなんかでお世話になっている人も多いことでしょう。Ubuntuでもgitパッケージをインストールすることで簡単に導入できます。
ちなみに、Gitは初期状態だと日本語などのマルチバイトのファイル名を数値表現で表示します。git-gui/gitk以外のクライアントはこれを数値のまま表示してしまうため、日本語ファイル名を含む差分を見るときに不便です。以下のコマンドで、数値表現に変更せずそのまま表示するように設定を変更しておくとよいでしょう。
git-gui/gitk
git-gui/gitkはGitに公式に組み込まれているGUIクライアントです。gitkがリポジトリの履歴や差分を閲覧するビューワーで、git-guiが各種gitコマンドを実行するためのフロントエンドになります。git-guiからgitkもしくはgitkからgit-guiを呼び出すことも可能です。
Ubuntuだとgit-gui/gitkパッケージをインストールすれば使えるようになります。
例えば任意のリポジトリでコマンドからgitkを起動した画面は以下のような感じになります。ちなみにブランチをすべて表示したい場合は、各コマンドの後ろに--allをつけてください。他のツールでもこの--allオプションが有効な場合があります。
ファイルから「git guiの開始」を選択するとgit guiが起動します。
Tcl/TkベースのUIなので、少し古い感じのするインターフェースとなっていますが、gitで必要な操作を一通りできるのと、軽さが強みです。
Qgit
Qgitはその名のとおりQtベースのGit GUIクライアントです。モダンなインターフェースで、履歴や差分を見たり、そこからパッチを生成することができます。
起動方法はリポジトリでqgitコマンドを入力するか、Dashからqgitを検索しリポジトリを追加してください。
ブランチの生成やコミットもできるのですが、gitの細かい操作はActionsを経て実行する必要があり、どちらかというとStGITと連携したパッチ管理システムのインターフェースとしての使い方の方があっているようです。
git-cola
git-colaもまたQtベースのGUIクライアントですが、こちらはPython-Qtを使っています。qgitと違って、マージやpush/pullといった操作も最初から用意されているので、Gitのインターフェースとして使いたいなら、qgitよりもこちらをおすすめします。
ただし、リポジトリからインストールできるのは1.4系列です。数ヶ月前に1.7系がリリースされて、インターフェースも刷新され、履歴をDAG形式で視覚化したgit-dagも強化されているので、新しい方を自分でインストールするのもよいでしょう。
Giggle
Gtk+ベースのGitクライアントだと、GNOMEで開発しているgiggleが有名です。GNOMEのポリシーにあわせた、シンプルでわかりやすいインターフェースが特徴です。
ファイルペイン表示からGeditを起動してファイルを編集するなど、Nautilusでのファイル操作を多用している人ならすぐに慣れるでしょう。
ただし、チェックアウトやマージの機能がない、大きなリポジトリの取り込み時や差分表示時に若干もたつくなど、他のクライアントに比べると機能性についてはまだ足りない印象です。
ちなみにgiggle-terminal-view-pluginを使って端末を組み込むこともできるので、履歴の表示などはgiggleで、細かい操作は端末でといった切り分けも可能です。
RabbitVCS
RabbitVCSは、NautilusやGeditに組み込むタイプのGitクライアントです。いわゆるTortoiseSVNのGit/Nautilus版だと考えていただければイメージしやすいと思います。
インストール後は、一度ログインしなおしてください。また、Geditについては現状Gedit 2にしか対応していないようですので、11.10以降では使用できません。
NautilusでGitリポジトリのあるディレクトリを閲覧すると、マークがつき右クリックメニューで各gitコマンドが実行できるようになっているはずです。
すべて右クリックによる操作からメニューをたどる必要があるため、ショートカットが充実している他のクライアントに比べるとまどろっこしさがありますが、ファイルをコピーする感覚でgitコマンドを操作できるので、特定のファイル・ディレクトリ単位での操作を多用する場合に便利でしょう。
RabbitVCSはSubversionにも対応しています。
tig
tigは、端末内部で実行できるGitクライアントです。これまで紹介したクライアントとは異なり、すべてキーボードによる操作となります。
リポジトリのあるディレクトリでtigコマンドを入力すると起動します。
vimライクな操作で、視覚的に履歴や差分の閲覧、ブランチの切り替え、コミットが行えるので、SSH越しにGitリポジトリをグラフィカルに操作したい場合に真価を発揮します。
まずはhキーを入力してヘルプを読むと良いでしょう。終了はqキーです。
Bazaarクライアント
BazaarはCanonicalが開発している分散バージョン管理システムです。Launchpadでコードを公開する場合や、Ubuntuのパッケージを編集する場合によく使われます。
Bazaar Explorer
Bazaar ExplorerはQtベースのBazaarクライアントです。Bazaarを使った一通りの操作が、このクライアントから行え、しかもインターフェースもまとまっているため、ほとんどこれ一つでまかなえるほどです。
Bazaar Explorerの特徴の一つは、何か操作を行ったときに次に行うであろう操作のショートカットを用意してくれるところです。例えばファイルを編集したら、「差分を表示」や「新しいリビジョンとしてコミット」といった操作のボタンを一覧にして表示してくれるのです。
また、差分ビューワーもmeldライクの強力なものを備えているため、行単位だけではなく単語単位での違いも表示してくれます。
Gedit Bazaar plugin
Geditには、Bazaarのコマンドを発行するプラグインが存在します。
上記を導入した上でGeditを起動し、設定から「GDP Bazaar integration」にチェックをいれると、以降メニューにProjectがあらわれて、開いているファイルに対してBazaarを使った操作を行えるようになります。