LinuxでもGUI拡張でsvn 『nautilussvn』をインストールしてみた

LinuxでのSvnクライアント

Windowsには、GUIシェル拡張型のsvnクライアントとしてTortoiseSVNというのがあります。フォルダを右クリックしてコンテキストメニューからチェックアウトやコミットなどsvnでできるほとんどのことがカバーできてとても便利です。そんなわけでぼくもWindowsでは常にこれを使ってます。
Linuxでも同様のものがあればいいなーと思ってたんですが、見つかりませんでした。でQSvnRapidSVNを使おうとしてみたものの、なんとなく好きにならなかったので、最終的には標準のコマンドラインクライアントを使ってました。
で、今日Windowsで普段お世話になってるTortoiseLinuxへの移植があるらしいことを知り、試してみることにしました。

nautilussvnのインストール

nautilssvnは次のサイト上で公開されてます。去年の(というにはまだ早い感じがするけど、断じて去年の)12月半ばからはじまったプロジェクトらしいです。動くまでが早いなー。こちらで11月のインストール記録があるので明らかに間違いです)
Google Code Archive - Long-term storage for Google Code Project Hosting.
ご存知の方が多いと思いますが、nautilusというのはGnome標準のファイルマネージャです。KDEnautilusが動くかどうかはわからないので、もしかしたらKDEでは使えないかもしれません。
nautilussvnが動作するために必要なものが次のとおり:

……と、プロジェクトページには書かれていますが、大前提としてpythonが必要です。まあイマドキのLinuxpython入ってないことはほとんどないでしょうけど……。
まずはこの子たちをインストール。Ubuntuな僕はaptで一発でした。プロジェクトのインストール手順の紹介ページでは、Ubuntuに加えFedora, Gentooでのインストール手順が紹介されてます。

% sudo apt-get install python-nautilus python-wxgtk2.6 python-svn meld

こちらは何の問題もなく終わり。
次にnautilussvn本体のインストールです。こちらはパッケージ化はされていませんが、インストール手順ページでシェルスクリプトが公開されています。

#!/usr/bin/env bash

# Nautilus extensions live in ~/.nautilus/python-extensions - make sure that this directory exists.
mkdir -p ~/.nautilus/python-extensions/

# Next checkout NautilusSvn into ~/.nautilus/python-extensions/NautilusSvn
cd ~/.nautilus/python-extensions/
svn checkout http://nautilussvn.googlecode.com/svn/branches/stable NautilusSvn

# Setup the emblems
mkdir -p ~/.icons/hicolor/scalable
ln -s ~/.nautilus/python-extensions/NautilusSvn/icons ~/.icons/hicolor/scalable/emblems # The current emblems folder
ln -s ~/.nautilus/python-extensions/NautilusSvn/icons ~/.icons/hicolor/scalable/icons # The old emblems folder

# Finally we need to set up a symlink so that Nautilus finds the correct startup script. 
ln -s NautilusSvn/NautilusSvn.py NautilusSvn.py

# Now just restart Nautilus, and you should see the new Subversion menu items.
# 1) nautilus -q && nautilus
# 2) killall nautilus
# 3) log out and back in again

nautilus -q && nautilus

(コメントまでまとめて拝借)上のスクリプトを~/nautilussvn-install.shに保存し、

% chmod 755 nautilussvn-install.sh
% ./nautilussvn-install.sh

これで終了、最近のLinuxはマニュアルインストールも簡単でゆとりな僕は非常にうれしいです。
と思ったらコケた('A`
エラー内容は/var/lib/samba/usersharesが存在しないといったもの。SambaってあのSamba?インストールせねばならんのかなー。
と思ってエラーに含まれてた

Please ask your system administrator to enable user sharing.

という文言でググったら、こんな記述が。


I can verify that this bug still exists in the final release. The directory didn't exist. I have solved it by doing this

mkdir /var/lib/samba/usershares
chmod 777 /var/lib/samba/usershares

Bug #211966 “nautilus-share report a warning about missing /var...” : Bugs : samba package : Ubuntu

いや今回とは別ケースなんだろうけど、いきおいでやってみた。ついでにさっきは一般ユーザ権限でインストールスクリプトを実行してたので、これも改めた。

% sudo su
# mkdir /var/lib/samba/usershares
# chmod 777 /var/lib/samba/usershares
# ./nautilussvn-install.sh

しばらく時間がかかったものの、インストール完了。ひとつだけ警告があった:

** (nautilus:8119): WARNING **: Unable to add monitor: サポートしていない操作です

あったものの、とりあえず動くようなので放置しておく。

使ってみる

適当なディレクトリを作り、コンテキストメニューからCheckoutを選択。

あれ、これどっかでみたような……と思ったらまんまTortoiseじゃないですかwまあプロジェクトページにもCopyである旨明記されてるし、僕もそれを求めてたのでうれしいですが。
ちゃんとログも閲覧できる。すばらしい。ていうかアイコンも完全にTortoise。ぼくは幸せです。

Tortoise同様、ログの各行をクリックすることで当該リビジョンと手元の差分も閲覧できる。

差分の処理・表示にはmeldを使ってるようなので、利用する場合はrequirementsにオプションとして表示されていたmeldをインストールしておく必要があるっぽい。

Tortoiseと比べて

まあまだまったく使ってないのでアレですが、Tortoiseより安定してるような印象はある(明らかに実状はその逆だと思うけど)。あと前述のとおりLinuxでの開発だとコマンドラインクライアントを使うのが習慣化しちゃってるので、今からあえてnautilussvnに乗り換えるかといえば微妙かも。svnコマンドはこれはこれで楽だし。
とはいえはじめてLinuxSvn使おうと思ったときに、WinでTortoise使ってた人が非常に楽な思いができると思うので、開発者の人には感謝です。