Home > Latest topics

Latest topics 近況報告

たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。

萌えるふぉくす子さんだば子本制作プロジェクトの動向はもえじら組ブログで。

宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

Page 1/248: 1 2 3 4 5 6 7 8 9 »

SubversionからGitに移行した - Nov 01, 2010

アドオンの開発にはずっと須藤さんに用意してもらったSubversionのリポジトリを使ってたんだけど、

  • インターネットに繋がらない状態でコミットできないのが辛い
  • 他の人からの変更を受け取りづらい(そんな事があればの話なんだけど)

と思っていて、Git(あるいは他の分散型バージョン管理システム)ならそれが解消されると期待してて、でもずっと移行できていなかった。

  • コマンドライン操作が嫌いなので、Subversionを使うのにWindowsではTortoiseSVNを、LinuxではRabbitVCS(旧称:NautilusSVN)を使ってるけど、GitではWindowsにはTortoiseGitがあってもLinuxでは相当する物が無いみたい。
  • バージョン管理システムを移行するとそれまでのコミットの履歴も全部なくなっちゃうんじゃないの?
  • git-svnっていうのを使うといいと聞いたけど、試しても空のディレクトリしかできないんですけど……

というのがその理由だった。でも

  • git-svnは時々動作がうまくいかない事があるみたいで、Windows上のmsysgitが特に高確率で失敗するだけで、VirtualPC上のUbuntu 10.04LTSのgit-svnだとそれほどでもなかった。
    • それで成功したケースだとコミット履歴が完全に引き継がれてた。なんだ、ちゃんと動けばちゃんとやってくれるんじゃん!!!
  • 最近、システムモニターの開発でGitをずっと使ってたから、まあLinux上ではコマンドラインでも別にいいかな……という気がしてきた。

という事で、思い切って移行してみる事にしました。具体的な手順はSourceForge.JP のプロジェクトを Subversion から Git へ移行するに従いました。

SubversionとGit

大まかに言うとこういう事だと僕は理解してる。

  • Subversionでは、中央に1つのリポジトリがあって、それを各人がチェックアウトしてワーキングコピーを作り、ワーキングコピーに対して行った変更をリポジトリにコミットする、という形で「バージョンの管理」と「成果の共有」を実現する。
  • Gitでは、リポジトリのコピーを誰でも簡単に手元に作る事ができて(Gitではこれをcloneと言う)、Subversionでワーキングコピーからリポジトリに変更点をコミットするのと同じように、Gitではリポジトリとリポジトリの間で変更点をコミットできる(Gitではこれをpushとかpullとか言う)。
    • どれか1つのリポジトリを「中央のリポジトリ」として運用すれば、Subversionでのバージョン管理と同じような運用もできる。
    • 手元にできるのは「履歴の情報を持たないワーキングコピー」ではなく「元のリポジトリを複製したリポジトリそのもの」なので、インターネットに繋がってない状態でもローカルのリポジトリに対してコミットできる。
    • Subversionではtrunkと呼ばれていた物は、Gitではmasterと呼ばれる。
  • git-svnは、以下のような事をする。
    • Subversionのリポジトリのコミット履歴を全部辿る。
    • ローカルに新しいGitリポジトリを作って、Subversionのコミット履歴に対応するコミットを順番にそのGitリポジトリにコミットする。
    • なので、git-svnでGitリポジトリ化したSubversionリポジトリは、元のリポジトリの変更履歴を完全に引き継いだ物になる。

やってみる

ツリー型タブSubversionリポジトリをgithub上の同名のリポジトリに移行する手順を振り返ってみる。

  1. Subversionのリポジトリをgit-svnでGitリポジトリに変換する。
    $ git svn clone --prefix svn/ -s https://www.cozmixng.org/repos/piro/treestyletab
    これでローカルにtreestyletabという名前のディレクトリができて、これがGitリポジトリになってる。コミットを1件1件取り込むので、コミット数が多いとメチャメチャ時間がかかるけど、黙って待つ。たまに失敗するので、そういう時はできたゴミディレクトリを消してもう一度やり直す。
  2. githubに「treestyletab」という名前でリポジトリを作る。(分かりやすくするためにSubversionの物と同じ名前にするといい。リポジトリ名は後でgithub上で好きなように変更できるので。)これで、読み書き両用のURLとして「git@github.com:piroor/treestyletab.git」みたいなのが使えるようになる。
  3. ローカルにできたtreestyletabのGitリポジトリの「元」として、githubのリポジトリを登録する。
    $ git remote add origin git@github.com:piroor/treestyletab.git
    これによって、「このリポジトリはgithubのリポジトリをcloneした物ですよ」「このリポジトリに行われた変更を元のリポジトリにpushする時は、githubにpushしますよ」ということになる。
  4. pushする。
    $ git push origin master
    これで、Subversionのリポジトリから持ってきたコミット履歴が全部github上のリポジトリに反映される。
  5. Subversionのtagsの内容をGitのtagに変換する。Subversionでtags以下に作ったタグはブランチとして取り込まれているので、これをGitのタグにしてやる。
    $ git branch -r
    これでブランチの一覧を見れるので、
    $ git checkout svn/tags/0.10.2010102501
    という風にしてブランチを切り替えて
    $ git tag 0.10.2010102501
    でタグを打って
    $ git push --tags origin
    でタグの情報をgithubのリポジトリにpushする。タグの数だけこの操作を繰り返す。
  6. Subversionのbranchesにブランチがある場合、Gitのbranchに変換する。Gitだとローカルにあるブランチをgit push origin ローカルリポジトリのブランチ名:リモートリポジトリのブランチ名でリモートリポジトリにpushできるんだけど、git−svnでcloneしたローカルリポジトリにあるブランチはそのままだとpushできない(不可視のブランチになってる?)ようなので、
    $ git checkout svn/my-branch
    でブランチを切り替えて
    $ git branch my-branch
    で普通のブランチとして切り直して
    $ git push origin my-branch:my-branch
    でgithubにpushする。

自分はアドオンの数自体20個以上あるし、それぞれアホみたいに何度もリリースしててタグの数がハンパないことになってるので、全部手動でやることを考えたら気が遠くなりました。なのでこういうスクリプトをRubyで書いてみました。

#!/usr/bin/ruby

SVN_REPOSITORY_PATH = "https://www.cozmixng.org/repos/piro/<%= src_project_name %>"
GIT_REPOSITORY_PATH = "git@github.com:piroor/<%= dest_project_name %>.git"

$LOAD_PATH.unshift(File.dirname(__FILE__))

require "fileutils"
require "erb"
require "shellwords"

def main
  ARGV.each do |arg|
    p "process #{arg}"
    args = arg.split(":")
    src_project_name = args[0]
    dest_project_name = args.size > 1 ? args[1] : args[0]
    svn_to_git(src_project_name, dest_project_name)
  end
end

def svn_to_git(src_project_name, dest_project_name)
  p "svn:#{src_project_name}, git:#{dest_project_name}"
  clone(src_project_name)
  push(src_project_name, dest_project_name)
  push_branches_and_tags(src_project_name)
rescue Exception
  p $!
end

def clone(src_project_name)
  result = run("git", "svn", "clone",
               "--prefix", "svn/",
               "-s", ERB.new(SVN_REPOSITORY_PATH).result(binding).chomp)
    p result.to_s
  raise Exception.new("clone of #{src_project_name}, #{result.to_s}") unless result.to_s.include?("Checked out HEAD:")
end

def push(src_project_name, dest_project_name)
  FileUtils.cd(src_project_name) do
    result = run("git", "remote", "add",
                 "origin", ERB.new(GIT_REPOSITORY_PATH).result(binding).chomp)
    p result.to_s
    result = run("git", "push", "origin", "master")
    p result.to_s
    raise Exception.new("push of #{src_project_name}, #{result.to_s}") unless result.to_s.include?("master -> master")
  end
end

def push_branches_and_tags(src_project_name)
  FileUtils.cd(src_project_name) do
    branches = run("git", "branch", "-r")
    branches = branches.to_s.split("\n")
    branches.each do |branch|
      next unless branch.include?("svn/")
      branch.strip!

      name = branch.split("svn/")[1]
      next if name == "trunk"

      if name.include?("tags/")
        tag = branch.split("tags/")[1]
        p run("git", "checkout", branch)
        p run("git", "tag", tag)
        p run("git", "push", "--tags", "origin")
      else
        p run("git", "checkout", branch)
        p run("git", "branch", name)
        p run("git", "push", "origin", "#{name}:#{name}")
      end
    end
  end
end

def run(*args)
  command_line = Shellwords.shelljoin(args)
  result = `#{command_line} 2>&1`
  result
end

main

ファイル名は svn-to-git.rb として、

$ ./svn-to-git.rb treestyletab

とやると、ここまでの手順のうちgithubのサイト上でリポジトリを作る所以外を全部自動でやってくれるという物です(ということは、スクリプトの実行前にあらかじめgithubのサイト上でリポジトリを作っておかないといけない)。これでなんとか全部のリポジトリをgithubに持ってくることができましたXUL/Migemoの辞書をSQLiteにしてみようとかそういうブランチを切ってた物が取り込めてなかったりsvn:externalsで参照してた物が入ってなかったり、Subversionに突っ込んでから1回もコミットしてないプロジェクトをまだgithubに持ってきてなかったり(必要あるの? 無いよね?)という課題は残っていますが。→ブランチの取り込み方が分かったので追記しました。→svn:externalsの移行は諦めてsubmoduleにすることにしました。TortoiseGitでメニューから「Submodule Add」を選んでリポジトリにgit@github.com:piroor/makexpi.gitを、パスにbuildscriptを指定する、という手順でだいたい同じような結果になるみたい。更新の時はTortoiseGitだと「Git Sync」から「Submodule Sync」しないといけないようだ。コマンドラインなら一発で更新できるようなんだけど……

今後はgit-svn駆け込み寺あたりを熟読して頑張っていきたいと思っております。あと、今後具体的にコードを提供してくれるような人がもしいれば、githubの方にpull requestっていうんですか?するようにしてもらえたら幸いです。

……というまとめエントリを書こうとしてもうちょっと調べ直してたら、git-svnでタグが自動で取り込まれないとかの問題を解消するラッパーのsvn2gitという物があるということを今更知りました。ギャフン!!!!!

……さらに後から気がついたけど、HTTPでアクセスできる公開のSubversionリポジトリをgithubに移行するだけならtagやbranchの変換も含めてgithubのWebインターフェース上の機能だけでサクッとできてしまうことが分かりました。ギャフンギャフン!!!!!!!!! 手順は以下の通りです。

  1. githubで新しいリポジトリを作る。
  2. 空のリポジトリができたら、最初に表示されてる説明の下の方にある「Subversionのリポジトリを取り込みたい? ここをクリック」というリンク(日本語のUIにしてる場合。英語でも多分似たような文言があると思う。)を辿る。
  3. インポート元のSubversionリポジトリのURLを入力する。
  4. githubのユーザ名( 「piroor <piro.outsider.reflex@gmail.com>」のような、githubのユーザ名と登録済みのメールアドレスの組み合わせ)を作者として入力する。
  5. しばらく待つ。

最初githubのUIを英語で使ってたのと、下までスクロールしてなかったから気がついてなかった。なんということでしょう。丸1日以上を無駄にしてしまいました。

NautilusSVNで日本語のメッセージを付けてcommitできるようにする - Feb 09, 2009

以前Ubuntu 8.10に導入したNautilusSVNなんだけど、一つ困った事がある。それは、コミット時のメッセージを日本語で入力するとコミットできないという点。

普通のオープンソースのプロジェクトだったら英語でやるのが当たり前だろ!!!日本語のメッセージとか死ね!!!と言う人もいるだろうけど、そんなの知るかよと。TortoiseSVNじゃ普通にできてるんだから、できない方がおかしいだろと。とかぼやきつつも仕方ないからNautilusSVNからcommitする時だけは英語でコメント付けるようにしてたけど、英語苦手だからついつい二言三言の適当なメッセージだけでcommitして、後になってログ一覧見た時に何の変更だったのか訳が分からなくなる、ということがあまりに多いのでいいかげん我慢の限界がきた。

そもそもの所で勘違いしてたんだけど、日本語が通らないのはSubversion自体の問題ではなくてNautilusSVNの問題だということについ先日やっと気がついた。ターミナルでsvn commit -m "日本語のメッセージ"てな感じで書いたらちゃんとコミットできたし。あと閉じ括弧を入力するまでは改行とかもメッセージに普通に入れられるということにも気がついた。なのでしばらくの間、コミットだけコマンドライン操作でやるようにしてみたんだけど、やっぱりめんどくさい。

この手の問題はMozillaでもよくあって、Mozillaの場合は文字列のエンコーディングを変えてやるだけで解決する場合が多いので、NautilusSVNでもきっとそうなんじゃないだろうか。と見当を付けて、思い切ってソースコードを覗いてみた。~/.nautilus/python-extensions/NautilusSvn/SvnCommit.py の中のそれらしい箇所に、ぐぐって調べた文字エンコーディング変換のコードを一行加えて、試しにコミットしてみたら無事に日本語が通るようになった。

Index: SvnCommit.py
===================================================================
--- SvnCommit.py    (リビジョン 776)
+++ SvnCommit.py    (作業コピー)
@@ -102,6 +102,7 @@

         ctrl = XRCCTRL( self.frame, "Message" )
         self.commitMessage = ctrl.GetValue()
+        self.commitMessage = self.commitMessage.encode("UTF-8")
         # If the user doesn't supply a commit message we will just use the string
         # "Empty message" since pysvn doesn't accept an empty string see:
         #     pysvn._pysvn_2_5.ClientError: callback_get_log_message required

commit.diff

変更箇所はほんとにこれだけ。

Ubuntu 8.10でNautilusSvnを使う - Nov 25, 2008

僕はバージョン管理システムのSubversionのクライアントとして、WindowsではTortoiseSVNを使っている。TortoiseSVNはシェル統合型のクライアントで、エクスプローラのファイルアイコンがファイルの状態(競合とか最新とか変更ありとか)に応じて変化したり、フォルダの右クリックからチェックアウトや更新や差分の表示やログの閲覧ができたりと、独自ファイラを使わない僕にとっては実に使い勝手が良い。

TortoiseSVNはWindows専用なので、UbuntuではRapidSVNを使ってたんだけど、Ubuntu 8.04LTSで使うとどーいうわけかコミットしようとすると必ず落ちる(しかもその時作業対象のフォルダをロックしたままで死にやがる)という問題が起こっていて、チェックアウトしかできなくて困ってた。コマンドラインからsvnコマンドを使えばコミットすることはできるといえばできるんだけど、根っからのGUI人間なので、いつもそうするというのは苦痛で苦痛で……

そんな時に、Nautilus向けのシェル拡張としてNautilusSvnというTortoiseSVNクローンが存在するということを教えてもらったので、是非入れよう! すぐ入れよう! 幸いページの一番下に.debなパッケージもあることだし! と思ってダブルクリックしてみたらパッケージマネージャに蹴られて撃沈して僕涙目。Python関係のパッケージの依存関係が壊れてるだかなんだかでインストールすらできなかった。

それ以来すっかり諦めてたんだけど、先日Ubuntu 8.10にアップグレードしたので今度はうまくいくんじゃないか? と思って再挑戦してみた。.debをダブルクリックしてパッケージマネージャから入れてみると、今度はインストールには成功したんだけど、再起動してもちっともそれっぽい変化が現れない。

Google検索したらUbuntuのフォーラムのトピックGoogleコード上のプロジェクトページが紹介されていたので、これがダメだったらもう諦めよう、という気持ちでそこのWikiに書いてあったインストール手順に従って操作してみた。そしたらうまくいった。やった!!!

以下、すべてコマンドライン操作。

  1. 必要なパッケージ一式を先にインストールする。sudo apt-get install python-nautilus python-wxgtk2.6 python-svn meld
  2. Nautilusの拡張機能?フォルダを作成して、NautilusSvnのファイルを配置する。
  3. ファイルの上にオーバーレイ表示する小さなアイコンをインストールする。
    • mkdir -p ~/.icons/hicolor/scalable
    • ln -s ~/.nautilus/python-extensions/NautilusSvn/icons ~/.icons/hicolor/scalable/emblems
    • ln -s ~/.nautilus/python-extensions/NautilusSvn/icons ~/.icons/hicolor/scalable/icons
  4. Nautilus起動時に初期化させるためのスクリプトを配置する。ln -s NautilusSvn/NautilusSvn.py NautilusSvn.py

で、ログアウトしてログインし直した後にNautilusで適当なフォルダを開いて右クリックすると、メニューの中に「SVN Checkout」という項目が増えてた。Subversion管理下のフォルダだとフォルダやファイルのアイコンの上に状態を示す小さなアイコンが表示されるようになってて、管理下のフォルダで右クリックすればログや差分も見られる。

.debでやった時にうまくいかなかった理由については結局分からずじまいなんだけど、最初に入れる必要なパッケージの中の一つがWikiには「python-wxgtk2.6」と書かれていたのに対して、.debではpython-wxgtk2.8が入っていたので、もしかしたらこのバージョンの違いが原因だったんだろうか?

あと、この件について調べてる中でnautilus-script-collection-svnというパッケージがあることも分かった。こちらはSubversion用のシェルスクリプトをNautilusの汎用的なユーザスクリプト呼び出し機能を使って起動して使うというもののようで、パッケージをインストールした後に sudo ln -s /usr/share/nautilus-scripts/Subversion ~/.gnome2/nautilus-scripts/Subversionとしてシンボリックリンクを作成すると、次回起動時以降、Nautilusのフォルダ内での右クリックメニューの「スクリプト」サブメニューからそれぞれのシェルスクリプトを呼び出せるようになる。こちらはコミット前の「やっぱりやめとこう」みたいな取り消しができないっぽかったりSubversion管理下のファイルやフォルダの状態が特に表示されなかったりという問題があるので、NautilusSvnが使える環境だったらNautilusSvnを使った方が良さそうだ。どうしてもNautilusSvnが動かないという時のために一応メモしておく。

余談。NautilusSvnでもTortoiseSVNでも微妙に不便な点として、まあこれは仕様上当たり前なのかもしれんけど、ある場所にチェックアウトしたSubversion管理下のフォルダに対するシンボリックリンク(Windowsだったらジャンクション?)からはコミットできないという問題がある。Windowsの場合はフォルダのショートカットがあるから別にいいんだけど、Linux(GNOME)だとGUIからは簡単には「フォルダのショートカット」を作れない(アプリケーションのランチャを作って、コマンドに「nautilus "パス"」と書けば、擬似的にフォルダのショートカットを作ることはできる)ようなので、そこだけ地味に困ってる。

2009年2月9日追記。日本語のメッセージを付けてコミットできない問題に対処してみた。

Ubuntu 8.10でNautilusSvnを使う - Jan 01, 1970

僕はバージョン管理システムのSubversionのクライアントとして、WindowsではTortoiseSVNを使っている。TortoiseSVNはシェル統合型のクライアントで、エクスプローラのファイルアイコンがファイルの状態(競合とか最新とか変更ありとか)に応じて変化したり、フォルダの右クリックからチェックアウトや更新や差分の表示やログの閲覧ができたりと、独自ファイラを使わない僕にとっては実に使い勝手が良い。

TortoiseSVNはWindows専用なので、UbuntuではRapidSVNを使ってたんだけど、Ubuntu 8.04LTSで使うとどーいうわけかコミットしようとすると必ず落ちる(しかもその時作業対象のフォルダをロックしたままで死にやがる)という問題が起こっていて、チェックアウトしかできなくて困ってた。コマンドラインからsvnコマンドを使えばコミットすることはできるといえばできるんだけど、根っからのGUI人間なので、いつもそうするというのは苦痛で苦痛で……

そんな時に、Nautilus向けのシェル拡張としてNautilusSvnというTortoiseSVNクローンが存在するということを教えてもらったので、是非入れよう! すぐ入れよう! 幸いページの一番下に.debなパッケージもあることだし! と思ってダブルクリックしてみたらパッケージマネージャに蹴られて撃沈して僕涙目。Python関係のパッケージの依存関係が壊れてるだかなんだかでインストールすらできなかった。

それ以来すっかり諦めてたんだけど、先日Ubuntu 8.10にアップグレードしたので今度はうまくいくんじゃないか? と思って再挑戦してみた。.debをダブルクリックしてパッケージマネージャから入れてみると、今度はインストールには成功したんだけど、再起動してもちっともそれっぽい変化が現れない。

Google検索したらUbuntuのフォーラムのトピックGoogleコード上のプロジェクトページが紹介されていたので、これがダメだったらもう諦めよう、という気持ちでそこのWikiに書いてあったインストール手順に従って操作してみた。そしたらうまくいった。やった!!!

以下、すべてコマンドライン操作。

  1. 必要なパッケージ一式を先にインストールする。sudo apt-get install python-nautilus python-wxgtk2.6 python-svn meld
  2. Nautilusの拡張機能?フォルダを作成して、NautilusSvnのファイルを配置する。
  3. ファイルの上にオーバーレイ表示する小さなアイコンをインストールする。
    • mkdir -p ~/.icons/hicolor/scalable
    • ln -s ~/.nautilus/python-extensions/NautilusSvn/icons ~/.icons/hicolor/scalable/emblems
    • ln -s ~/.nautilus/python-extensions/NautilusSvn/icons ~/.icons/hicolor/scalable/icons
  4. Nautilus起動時に初期化させるためのスクリプトを配置する。ln -s NautilusSvn/NautilusSvn.py NautilusSvn.py

で、ログアウトしてログインし直した後にNautilusで適当なフォルダを開いて右クリックすると、メニューの中に「SVN Checkout」という項目が増えてた。Subversion管理下のフォルダだとフォルダやファイルのアイコンの上に状態を示す小さなアイコンが表示されるようになってて、管理下のフォルダで右クリックすればログや差分も見られる。

.debでやった時にうまくいかなかった理由については結局分からずじまいなんだけど、最初に入れる必要なパッケージの中の一つがWikiには「python-wxgtk2.6」と書かれていたのに対して、.debではpython-wxgtk2.8が入っていたので、もしかしたらこのバージョンの違いが原因だったんだろうか?

あと、この件について調べてる中でnautilus-script-collection-svnというパッケージがあることも分かった。こちらはSubversion用のシェルスクリプトをNautilusの汎用的なユーザスクリプト呼び出し機能を使って起動して使うというもののようで、パッケージをインストールした後に sudo ln -s /usr/share/nautilus-scripts/Subversion ~/.gnome2/nautilus-scripts/Subversionとしてシンボリックリンクを作成すると、次回起動時以降、Nautilusのフォルダ内での右クリックメニューの「スクリプト」サブメニューからそれぞれのシェルスクリプトを呼び出せるようになる。こちらはコミット前の「やっぱりやめとこう」みたいな取り消しができないっぽかったりSubversion管理下のファイルやフォルダの状態が特に表示されなかったりという問題があるので、NautilusSvnが使える環境だったらNautilusSvnを使った方が良さそうだ。どうしてもNautilusSvnが動かないという時のために一応メモしておく。

余談。NautilusSvnでもTortoiseSVNでも微妙に不便な点として、まあこれは仕様上当たり前なのかもしれんけど、ある場所にチェックアウトしたSubversion管理下のフォルダに対するシンボリックリンク(Windowsだったらジャンクション?)からはコミットできないという問題がある。Windowsの場合はフォルダのショートカットがあるから別にいいんだけど、Linux(GNOME)だとGUIからは簡単には「フォルダのショートカット」を作れない(アプリケーションのランチャを作って、コマンドに「nautilus "パス"」と書けば、擬似的にフォルダのショートカットを作ることはできる)ようなので、そこだけ地味に困ってる。

2009年2月9日追記。日本語のメッセージを付けてコミットできない問題に対処してみた。

Ubuntu 8.10でNautilusSvnを使う - Jan 01, 1970

僕はバージョン管理システムのSubversionのクライアントとして、WindowsではTortoiseSVNを使っている。TortoiseSVNはシェル統合型のクライアントで、エクスプローラのファイルアイコンがファイルの状態(競合とか最新とか変更ありとか)に応じて変化したり、フォルダの右クリックからチェックアウトや更新や差分の表示やログの閲覧ができたりと、独自ファイラを使わない僕にとっては実に使い勝手が良い。

TortoiseSVNはWindows専用なので、UbuntuではRapidSVNを使ってたんだけど、Ubuntu 8.04LTSで使うとどーいうわけかコミットしようとすると必ず落ちる(しかもその時作業対象のフォルダをロックしたままで死にやがる)という問題が起こっていて、チェックアウトしかできなくて困ってた。コマンドラインからsvnコマンドを使えばコミットすることはできるといえばできるんだけど、根っからのGUI人間なので、いつもそうするというのは苦痛で苦痛で……

そんな時に、Nautilus向けのシェル拡張としてNautilusSvnというTortoiseSVNクローンが存在するということを教えてもらったので、是非入れよう! すぐ入れよう! 幸いページの一番下に.debなパッケージもあることだし! と思ってダブルクリックしてみたらパッケージマネージャに蹴られて撃沈して僕涙目。Python関係のパッケージの依存関係が壊れてるだかなんだかでインストールすらできなかった。

それ以来すっかり諦めてたんだけど、先日Ubuntu 8.10にアップグレードしたので今度はうまくいくんじゃないか? と思って再挑戦してみた。.debをダブルクリックしてパッケージマネージャから入れてみると、今度はインストールには成功したんだけど、再起動してもちっともそれっぽい変化が現れない。

Google検索したらUbuntuのフォーラムのトピックGoogleコード上のプロジェクトページが紹介されていたので、これがダメだったらもう諦めよう、という気持ちでそこのWikiに書いてあったインストール手順に従って操作してみた。そしたらうまくいった。やった!!!

以下、すべてコマンドライン操作。

  1. 必要なパッケージ一式を先にインストールする。sudo apt-get install python-nautilus python-wxgtk2.6 python-svn meld
  2. Nautilusの拡張機能?フォルダを作成して、NautilusSvnのファイルを配置する。
  3. ファイルの上にオーバーレイ表示する小さなアイコンをインストールする。
    • mkdir -p ~/.icons/hicolor/scalable
    • ln -s ~/.nautilus/python-extensions/NautilusSvn/icons ~/.icons/hicolor/scalable/emblems
    • ln -s ~/.nautilus/python-extensions/NautilusSvn/icons ~/.icons/hicolor/scalable/icons
  4. Nautilus起動時に初期化させるためのスクリプトを配置する。ln -s NautilusSvn/NautilusSvn.py NautilusSvn.py

で、ログアウトしてログインし直した後にNautilusで適当なフォルダを開いて右クリックすると、メニューの中に「SVN Checkout」という項目が増えてた。Subversion管理下のフォルダだとフォルダやファイルのアイコンの上に状態を示す小さなアイコンが表示されるようになってて、管理下のフォルダで右クリックすればログや差分も見られる。

.debでやった時にうまくいかなかった理由については結局分からずじまいなんだけど、最初に入れる必要なパッケージの中の一つがWikiには「python-wxgtk2.6」と書かれていたのに対して、.debではpython-wxgtk2.8が入っていたので、もしかしたらこのバージョンの違いが原因だったんだろうか?

あと、この件について調べてる中でnautilus-script-collection-svnというパッケージがあることも分かった。こちらはSubversion用のシェルスクリプトをNautilusの汎用的なユーザスクリプト呼び出し機能を使って起動して使うというもののようで、パッケージをインストールした後に sudo ln -s /usr/share/nautilus-scripts/Subversion ~/.gnome2/nautilus-scripts/Subversionとしてシンボリックリンクを作成すると、次回起動時以降、Nautilusのフォルダ内での右クリックメニューの「スクリプト」サブメニューからそれぞれのシェルスクリプトを呼び出せるようになる。こちらはコミット前の「やっぱりやめとこう」みたいな取り消しができないっぽかったりSubversion管理下のファイルやフォルダの状態が特に表示されなかったりという問題があるので、NautilusSvnが使える環境だったらNautilusSvnを使った方が良さそうだ。どうしてもNautilusSvnが動かないという時のために一応メモしておく。

余談。NautilusSvnでもTortoiseSVNでも微妙に不便な点として、まあこれは仕様上当たり前なのかもしれんけど、ある場所にチェックアウトしたSubversion管理下のフォルダに対するシンボリックリンク(Windowsだったらジャンクション?)からはコミットできないという問題がある。Windowsの場合はフォルダのショートカットがあるから別にいいんだけど、Linux(GNOME)だとGUIからは簡単には「フォルダのショートカット」を作れない(アプリケーションのランチャを作って、コマンドに「nautilus "パス"」と書けば、擬似的にフォルダのショートカットを作ることはできる)ようなので、そこだけ地味に困ってる。

2009年2月9日追記。日本語のメッセージを付けてコミットできない問題に対処してみた。

Ubuntu 8.10でNautilusSvnを使う - Jan 01, 1970

僕はバージョン管理システムのSubversionのクライアントとして、WindowsではTortoiseSVNを使っている。TortoiseSVNはシェル統合型のクライアントで、エクスプローラのファイルアイコンがファイルの状態(競合とか最新とか変更ありとか)に応じて変化したり、フォルダの右クリックからチェックアウトや更新や差分の表示やログの閲覧ができたりと、独自ファイラを使わない僕にとっては実に使い勝手が良い。

TortoiseSVNはWindows専用なので、UbuntuではRapidSVNを使ってたんだけど、Ubuntu 8.04LTSで使うとどーいうわけかコミットしようとすると必ず落ちる(しかもその時作業対象のフォルダをロックしたままで死にやがる)という問題が起こっていて、チェックアウトしかできなくて困ってた。コマンドラインからsvnコマンドを使えばコミットすることはできるといえばできるんだけど、根っからのGUI人間なので、いつもそうするというのは苦痛で苦痛で……

そんな時に、Nautilus向けのシェル拡張としてNautilusSvnというTortoiseSVNクローンが存在するということを教えてもらったので、是非入れよう! すぐ入れよう! 幸いページの一番下に.debなパッケージもあることだし! と思ってダブルクリックしてみたらパッケージマネージャに蹴られて撃沈して僕涙目。Python関係のパッケージの依存関係が壊れてるだかなんだかでインストールすらできなかった。

それ以来すっかり諦めてたんだけど、先日Ubuntu 8.10にアップグレードしたので今度はうまくいくんじゃないか? と思って再挑戦してみた。.debをダブルクリックしてパッケージマネージャから入れてみると、今度はインストールには成功したんだけど、再起動してもちっともそれっぽい変化が現れない。

Google検索したらUbuntuのフォーラムのトピックGoogleコード上のプロジェクトページが紹介されていたので、これがダメだったらもう諦めよう、という気持ちでそこのWikiに書いてあったインストール手順に従って操作してみた。そしたらうまくいった。やった!!!

以下、すべてコマンドライン操作。

  1. 必要なパッケージ一式を先にインストールする。sudo apt-get install python-nautilus python-wxgtk2.6 python-svn meld
  2. Nautilusの拡張機能?フォルダを作成して、NautilusSvnのファイルを配置する。
  3. ファイルの上にオーバーレイ表示する小さなアイコンをインストールする。
    • mkdir -p ~/.icons/hicolor/scalable
    • ln -s ~/.nautilus/python-extensions/NautilusSvn/icons ~/.icons/hicolor/scalable/emblems
    • ln -s ~/.nautilus/python-extensions/NautilusSvn/icons ~/.icons/hicolor/scalable/icons
  4. Nautilus起動時に初期化させるためのスクリプトを配置する。ln -s NautilusSvn/NautilusSvn.py NautilusSvn.py

で、ログアウトしてログインし直した後にNautilusで適当なフォルダを開いて右クリックすると、メニューの中に「SVN Checkout」という項目が増えてた。Subversion管理下のフォルダだとフォルダやファイルのアイコンの上に状態を示す小さなアイコンが表示されるようになってて、管理下のフォルダで右クリックすればログや差分も見られる。

.debでやった時にうまくいかなかった理由については結局分からずじまいなんだけど、最初に入れる必要なパッケージの中の一つがWikiには「python-wxgtk2.6」と書かれていたのに対して、.debではpython-wxgtk2.8が入っていたので、もしかしたらこのバージョンの違いが原因だったんだろうか?

あと、この件について調べてる中でnautilus-script-collection-svnというパッケージがあることも分かった。こちらはSubversion用のシェルスクリプトをNautilusの汎用的なユーザスクリプト呼び出し機能を使って起動して使うというもののようで、パッケージをインストールした後に sudo ln -s /usr/share/nautilus-scripts/Subversion ~/.gnome2/nautilus-scripts/Subversionとしてシンボリックリンクを作成すると、次回起動時以降、Nautilusのフォルダ内での右クリックメニューの「スクリプト」サブメニューからそれぞれのシェルスクリプトを呼び出せるようになる。こちらはコミット前の「やっぱりやめとこう」みたいな取り消しができないっぽかったりSubversion管理下のファイルやフォルダの状態が特に表示されなかったりという問題があるので、NautilusSvnが使える環境だったらNautilusSvnを使った方が良さそうだ。どうしてもNautilusSvnが動かないという時のために一応メモしておく。

余談。NautilusSvnでもTortoiseSVNでも微妙に不便な点として、まあこれは仕様上当たり前なのかもしれんけど、ある場所にチェックアウトしたSubversion管理下のフォルダに対するシンボリックリンク(Windowsだったらジャンクション?)からはコミットできないという問題がある。Windowsの場合はフォルダのショートカットがあるから別にいいんだけど、Linux(GNOME)だとGUIからは簡単には「フォルダのショートカット」を作れない(アプリケーションのランチャを作って、コマンドに「nautilus "パス"」と書けば、擬似的にフォルダのショートカットを作ることはできる)ようなので、そこだけ地味に困ってる。

2009年2月9日追記。日本語のメッセージを付けてコミットできない問題に対処してみた。

Ubuntu 8.10でNautilusSvnを使う - Jan 01, 1970

僕はバージョン管理システムのSubversionのクライアントとして、WindowsではTortoiseSVNを使っている。TortoiseSVNはシェル統合型のクライアントで、エクスプローラのファイルアイコンがファイルの状態(競合とか最新とか変更ありとか)に応じて変化したり、フォルダの右クリックからチェックアウトや更新や差分の表示やログの閲覧ができたりと、独自ファイラを使わない僕にとっては実に使い勝手が良い。

TortoiseSVNはWindows専用なので、UbuntuではRapidSVNを使ってたんだけど、Ubuntu 8.04LTSで使うとどーいうわけかコミットしようとすると必ず落ちる(しかもその時作業対象のフォルダをロックしたままで死にやがる)という問題が起こっていて、チェックアウトしかできなくて困ってた。コマンドラインからsvnコマンドを使えばコミットすることはできるといえばできるんだけど、根っからのGUI人間なので、いつもそうするというのは苦痛で苦痛で……

そんな時に、Nautilus向けのシェル拡張としてNautilusSvnというTortoiseSVNクローンが存在するということを教えてもらったので、是非入れよう! すぐ入れよう! 幸いページの一番下に.debなパッケージもあることだし! と思ってダブルクリックしてみたらパッケージマネージャに蹴られて撃沈して僕涙目。Python関係のパッケージの依存関係が壊れてるだかなんだかでインストールすらできなかった。

それ以来すっかり諦めてたんだけど、先日Ubuntu 8.10にアップグレードしたので今度はうまくいくんじゃないか? と思って再挑戦してみた。.debをダブルクリックしてパッケージマネージャから入れてみると、今度はインストールには成功したんだけど、再起動してもちっともそれっぽい変化が現れない。

Google検索したらUbuntuのフォーラムのトピックGoogleコード上のプロジェクトページが紹介されていたので、これがダメだったらもう諦めよう、という気持ちでそこのWikiに書いてあったインストール手順に従って操作してみた。そしたらうまくいった。やった!!!

以下、すべてコマンドライン操作。

  1. 必要なパッケージ一式を先にインストールする。sudo apt-get install python-nautilus python-wxgtk2.6 python-svn meld
  2. Nautilusの拡張機能?フォルダを作成して、NautilusSvnのファイルを配置する。
  3. ファイルの上にオーバーレイ表示する小さなアイコンをインストールする。
    • mkdir -p ~/.icons/hicolor/scalable
    • ln -s ~/.nautilus/python-extensions/NautilusSvn/icons ~/.icons/hicolor/scalable/emblems
    • ln -s ~/.nautilus/python-extensions/NautilusSvn/icons ~/.icons/hicolor/scalable/icons
  4. Nautilus起動時に初期化させるためのスクリプトを配置する。ln -s NautilusSvn/NautilusSvn.py NautilusSvn.py

で、ログアウトしてログインし直した後にNautilusで適当なフォルダを開いて右クリックすると、メニューの中に「SVN Checkout」という項目が増えてた。Subversion管理下のフォルダだとフォルダやファイルのアイコンの上に状態を示す小さなアイコンが表示されるようになってて、管理下のフォルダで右クリックすればログや差分も見られる。

.debでやった時にうまくいかなかった理由については結局分からずじまいなんだけど、最初に入れる必要なパッケージの中の一つがWikiには「python-wxgtk2.6」と書かれていたのに対して、.debではpython-wxgtk2.8が入っていたので、もしかしたらこのバージョンの違いが原因だったんだろうか?

あと、この件について調べてる中でnautilus-script-collection-svnというパッケージがあることも分かった。こちらはSubversion用のシェルスクリプトをNautilusの汎用的なユーザスクリプト呼び出し機能を使って起動して使うというもののようで、パッケージをインストールした後に sudo ln -s /usr/share/nautilus-scripts/Subversion ~/.gnome2/nautilus-scripts/Subversionとしてシンボリックリンクを作成すると、次回起動時以降、Nautilusのフォルダ内での右クリックメニューの「スクリプト」サブメニューからそれぞれのシェルスクリプトを呼び出せるようになる。こちらはコミット前の「やっぱりやめとこう」みたいな取り消しができないっぽかったりSubversion管理下のファイルやフォルダの状態が特に表示されなかったりという問題があるので、NautilusSvnが使える環境だったらNautilusSvnを使った方が良さそうだ。どうしてもNautilusSvnが動かないという時のために一応メモしておく。

余談。NautilusSvnでもTortoiseSVNでも微妙に不便な点として、まあこれは仕様上当たり前なのかもしれんけど、ある場所にチェックアウトしたSubversion管理下のフォルダに対するシンボリックリンク(Windowsだったらジャンクション?)からはコミットできないという問題がある。Windowsの場合はフォルダのショートカットがあるから別にいいんだけど、Linux(GNOME)だとGUIからは簡単には「フォルダのショートカット」を作れない(アプリケーションのランチャを作って、コマンドに「nautilus "パス"」と書けば、擬似的にフォルダのショートカットを作ることはできる)ようなので、そこだけ地味に困ってる。

2009年2月9日追記。日本語のメッセージを付けてコミットできない問題に対処してみた。

Ubuntu 8.10でNautilusSvnを使う - Jan 01, 1970

僕はバージョン管理システムのSubversionのクライアントとして、WindowsではTortoiseSVNを使っている。TortoiseSVNはシェル統合型のクライアントで、エクスプローラのファイルアイコンがファイルの状態(競合とか最新とか変更ありとか)に応じて変化したり、フォルダの右クリックからチェックアウトや更新や差分の表示やログの閲覧ができたりと、独自ファイラを使わない僕にとっては実に使い勝手が良い。

TortoiseSVNはWindows専用なので、UbuntuではRapidSVNを使ってたんだけど、Ubuntu 8.04LTSで使うとどーいうわけかコミットしようとすると必ず落ちる(しかもその時作業対象のフォルダをロックしたままで死にやがる)という問題が起こっていて、チェックアウトしかできなくて困ってた。コマンドラインからsvnコマンドを使えばコミットすることはできるといえばできるんだけど、根っからのGUI人間なので、いつもそうするというのは苦痛で苦痛で……

そんな時に、Nautilus向けのシェル拡張としてNautilusSvnというTortoiseSVNクローンが存在するということを教えてもらったので、是非入れよう! すぐ入れよう! 幸いページの一番下に.debなパッケージもあることだし! と思ってダブルクリックしてみたらパッケージマネージャに蹴られて撃沈して僕涙目。Python関係のパッケージの依存関係が壊れてるだかなんだかでインストールすらできなかった。

それ以来すっかり諦めてたんだけど、先日Ubuntu 8.10にアップグレードしたので今度はうまくいくんじゃないか? と思って再挑戦してみた。.debをダブルクリックしてパッケージマネージャから入れてみると、今度はインストールには成功したんだけど、再起動してもちっともそれっぽい変化が現れない。

Google検索したらUbuntuのフォーラムのトピックGoogleコード上のプロジェクトページが紹介されていたので、これがダメだったらもう諦めよう、という気持ちでそこのWikiに書いてあったインストール手順に従って操作してみた。そしたらうまくいった。やった!!!

以下、すべてコマンドライン操作。

  1. 必要なパッケージ一式を先にインストールする。sudo apt-get install python-nautilus python-wxgtk2.6 python-svn meld
  2. Nautilusの拡張機能?フォルダを作成して、NautilusSvnのファイルを配置する。
  3. ファイルの上にオーバーレイ表示する小さなアイコンをインストールする。
    • mkdir -p ~/.icons/hicolor/scalable
    • ln -s ~/.nautilus/python-extensions/NautilusSvn/icons ~/.icons/hicolor/scalable/emblems
    • ln -s ~/.nautilus/python-extensions/NautilusSvn/icons ~/.icons/hicolor/scalable/icons
  4. Nautilus起動時に初期化させるためのスクリプトを配置する。ln -s NautilusSvn/NautilusSvn.py NautilusSvn.py

で、ログアウトしてログインし直した後にNautilusで適当なフォルダを開いて右クリックすると、メニューの中に「SVN Checkout」という項目が増えてた。Subversion管理下のフォルダだとフォルダやファイルのアイコンの上に状態を示す小さなアイコンが表示されるようになってて、管理下のフォルダで右クリックすればログや差分も見られる。

.debでやった時にうまくいかなかった理由については結局分からずじまいなんだけど、最初に入れる必要なパッケージの中の一つがWikiには「python-wxgtk2.6」と書かれていたのに対して、.debではpython-wxgtk2.8が入っていたので、もしかしたらこのバージョンの違いが原因だったんだろうか?

あと、この件について調べてる中でnautilus-script-collection-svnというパッケージがあることも分かった。こちらはSubversion用のシェルスクリプトをNautilusの汎用的なユーザスクリプト呼び出し機能を使って起動して使うというもののようで、パッケージをインストールした後に sudo ln -s /usr/share/nautilus-scripts/Subversion ~/.gnome2/nautilus-scripts/Subversionとしてシンボリックリンクを作成すると、次回起動時以降、Nautilusのフォルダ内での右クリックメニューの「スクリプト」サブメニューからそれぞれのシェルスクリプトを呼び出せるようになる。こちらはコミット前の「やっぱりやめとこう」みたいな取り消しができないっぽかったりSubversion管理下のファイルやフォルダの状態が特に表示されなかったりという問題があるので、NautilusSvnが使える環境だったらNautilusSvnを使った方が良さそうだ。どうしてもNautilusSvnが動かないという時のために一応メモしておく。

余談。NautilusSvnでもTortoiseSVNでも微妙に不便な点として、まあこれは仕様上当たり前なのかもしれんけど、ある場所にチェックアウトしたSubversion管理下のフォルダに対するシンボリックリンク(Windowsだったらジャンクション?)からはコミットできないという問題がある。Windowsの場合はフォルダのショートカットがあるから別にいいんだけど、Linux(GNOME)だとGUIからは簡単には「フォルダのショートカット」を作れない(アプリケーションのランチャを作って、コマンドに「nautilus "パス"」と書けば、擬似的にフォルダのショートカットを作ることはできる)ようなので、そこだけ地味に困ってる。

2009年2月9日追記。日本語のメッセージを付けてコミットできない問題に対処してみた。

Ubuntu 8.10でNautilusSvnを使う - Jan 01, 1970

僕はバージョン管理システムのSubversionのクライアントとして、WindowsではTortoiseSVNを使っている。TortoiseSVNはシェル統合型のクライアントで、エクスプローラのファイルアイコンがファイルの状態(競合とか最新とか変更ありとか)に応じて変化したり、フォルダの右クリックからチェックアウトや更新や差分の表示やログの閲覧ができたりと、独自ファイラを使わない僕にとっては実に使い勝手が良い。

TortoiseSVNはWindows専用なので、UbuntuではRapidSVNを使ってたんだけど、Ubuntu 8.04LTSで使うとどーいうわけかコミットしようとすると必ず落ちる(しかもその時作業対象のフォルダをロックしたままで死にやがる)という問題が起こっていて、チェックアウトしかできなくて困ってた。コマンドラインからsvnコマンドを使えばコミットすることはできるといえばできるんだけど、根っからのGUI人間なので、いつもそうするというのは苦痛で苦痛で……

そんな時に、Nautilus向けのシェル拡張としてNautilusSvnというTortoiseSVNクローンが存在するということを教えてもらったので、是非入れよう! すぐ入れよう! 幸いページの一番下に.debなパッケージもあることだし! と思ってダブルクリックしてみたらパッケージマネージャに蹴られて撃沈して僕涙目。Python関係のパッケージの依存関係が壊れてるだかなんだかでインストールすらできなかった。

それ以来すっかり諦めてたんだけど、先日Ubuntu 8.10にアップグレードしたので今度はうまくいくんじゃないか? と思って再挑戦してみた。.debをダブルクリックしてパッケージマネージャから入れてみると、今度はインストールには成功したんだけど、再起動してもちっともそれっぽい変化が現れない。

Google検索したらUbuntuのフォーラムのトピックGoogleコード上のプロジェクトページが紹介されていたので、これがダメだったらもう諦めよう、という気持ちでそこのWikiに書いてあったインストール手順に従って操作してみた。そしたらうまくいった。やった!!!

以下、すべてコマンドライン操作。

  1. 必要なパッケージ一式を先にインストールする。sudo apt-get install python-nautilus python-wxgtk2.6 python-svn meld
  2. Nautilusの拡張機能?フォルダを作成して、NautilusSvnのファイルを配置する。
  3. ファイルの上にオーバーレイ表示する小さなアイコンをインストールする。
    • mkdir -p ~/.icons/hicolor/scalable
    • ln -s ~/.nautilus/python-extensions/NautilusSvn/icons ~/.icons/hicolor/scalable/emblems
    • ln -s ~/.nautilus/python-extensions/NautilusSvn/icons ~/.icons/hicolor/scalable/icons
  4. Nautilus起動時に初期化させるためのスクリプトを配置する。ln -s NautilusSvn/NautilusSvn.py NautilusSvn.py

で、ログアウトしてログインし直した後にNautilusで適当なフォルダを開いて右クリックすると、メニューの中に「SVN Checkout」という項目が増えてた。Subversion管理下のフォルダだとフォルダやファイルのアイコンの上に状態を示す小さなアイコンが表示されるようになってて、管理下のフォルダで右クリックすればログや差分も見られる。

.debでやった時にうまくいかなかった理由については結局分からずじまいなんだけど、最初に入れる必要なパッケージの中の一つがWikiには「python-wxgtk2.6」と書かれていたのに対して、.debではpython-wxgtk2.8が入っていたので、もしかしたらこのバージョンの違いが原因だったんだろうか?

あと、この件について調べてる中でnautilus-script-collection-svnというパッケージがあることも分かった。こちらはSubversion用のシェルスクリプトをNautilusの汎用的なユーザスクリプト呼び出し機能を使って起動して使うというもののようで、パッケージをインストールした後に sudo ln -s /usr/share/nautilus-scripts/Subversion ~/.gnome2/nautilus-scripts/Subversionとしてシンボリックリンクを作成すると、次回起動時以降、Nautilusのフォルダ内での右クリックメニューの「スクリプト」サブメニューからそれぞれのシェルスクリプトを呼び出せるようになる。こちらはコミット前の「やっぱりやめとこう」みたいな取り消しができないっぽかったりSubversion管理下のファイルやフォルダの状態が特に表示されなかったりという問題があるので、NautilusSvnが使える環境だったらNautilusSvnを使った方が良さそうだ。どうしてもNautilusSvnが動かないという時のために一応メモしておく。

余談。NautilusSvnでもTortoiseSVNでも微妙に不便な点として、まあこれは仕様上当たり前なのかもしれんけど、ある場所にチェックアウトしたSubversion管理下のフォルダに対するシンボリックリンク(Windowsだったらジャンクション?)からはコミットできないという問題がある。Windowsの場合はフォルダのショートカットがあるから別にいいんだけど、Linux(GNOME)だとGUIからは簡単には「フォルダのショートカット」を作れない(アプリケーションのランチャを作って、コマンドに「nautilus "パス"」と書けば、擬似的にフォルダのショートカットを作ることはできる)ようなので、そこだけ地味に困ってる。

2009年2月9日追記。日本語のメッセージを付けてコミットできない問題に対処してみた。

Ubuntu 8.10でNautilusSvnを使う - Jan 01, 1970

僕はバージョン管理システムのSubversionのクライアントとして、WindowsではTortoiseSVNを使っている。TortoiseSVNはシェル統合型のクライアントで、エクスプローラのファイルアイコンがファイルの状態(競合とか最新とか変更ありとか)に応じて変化したり、フォルダの右クリックからチェックアウトや更新や差分の表示やログの閲覧ができたりと、独自ファイラを使わない僕にとっては実に使い勝手が良い。

TortoiseSVNはWindows専用なので、UbuntuではRapidSVNを使ってたんだけど、Ubuntu 8.04LTSで使うとどーいうわけかコミットしようとすると必ず落ちる(しかもその時作業対象のフォルダをロックしたままで死にやがる)という問題が起こっていて、チェックアウトしかできなくて困ってた。コマンドラインからsvnコマンドを使えばコミットすることはできるといえばできるんだけど、根っからのGUI人間なので、いつもそうするというのは苦痛で苦痛で……

そんな時に、Nautilus向けのシェル拡張としてNautilusSvnというTortoiseSVNクローンが存在するということを教えてもらったので、是非入れよう! すぐ入れよう! 幸いページの一番下に.debなパッケージもあることだし! と思ってダブルクリックしてみたらパッケージマネージャに蹴られて撃沈して僕涙目。Python関係のパッケージの依存関係が壊れてるだかなんだかでインストールすらできなかった。

それ以来すっかり諦めてたんだけど、先日Ubuntu 8.10にアップグレードしたので今度はうまくいくんじゃないか? と思って再挑戦してみた。.debをダブルクリックしてパッケージマネージャから入れてみると、今度はインストールには成功したんだけど、再起動してもちっともそれっぽい変化が現れない。

Google検索したらUbuntuのフォーラムのトピックGoogleコード上のプロジェクトページが紹介されていたので、これがダメだったらもう諦めよう、という気持ちでそこのWikiに書いてあったインストール手順に従って操作してみた。そしたらうまくいった。やった!!!

以下、すべてコマンドライン操作。

  1. 必要なパッケージ一式を先にインストールする。sudo apt-get install python-nautilus python-wxgtk2.6 python-svn meld
  2. Nautilusの拡張機能?フォルダを作成して、NautilusSvnのファイルを配置する。
  3. ファイルの上にオーバーレイ表示する小さなアイコンをインストールする。
    • mkdir -p ~/.icons/hicolor/scalable
    • ln -s ~/.nautilus/python-extensions/NautilusSvn/icons ~/.icons/hicolor/scalable/emblems
    • ln -s ~/.nautilus/python-extensions/NautilusSvn/icons ~/.icons/hicolor/scalable/icons
  4. Nautilus起動時に初期化させるためのスクリプトを配置する。ln -s NautilusSvn/NautilusSvn.py NautilusSvn.py

で、ログアウトしてログインし直した後にNautilusで適当なフォルダを開いて右クリックすると、メニューの中に「SVN Checkout」という項目が増えてた。Subversion管理下のフォルダだとフォルダやファイルのアイコンの上に状態を示す小さなアイコンが表示されるようになってて、管理下のフォルダで右クリックすればログや差分も見られる。

.debでやった時にうまくいかなかった理由については結局分からずじまいなんだけど、最初に入れる必要なパッケージの中の一つがWikiには「python-wxgtk2.6」と書かれていたのに対して、.debではpython-wxgtk2.8が入っていたので、もしかしたらこのバージョンの違いが原因だったんだろうか?

あと、この件について調べてる中でnautilus-script-collection-svnというパッケージがあることも分かった。こちらはSubversion用のシェルスクリプトをNautilusの汎用的なユーザスクリプト呼び出し機能を使って起動して使うというもののようで、パッケージをインストールした後に sudo ln -s /usr/share/nautilus-scripts/Subversion ~/.gnome2/nautilus-scripts/Subversionとしてシンボリックリンクを作成すると、次回起動時以降、Nautilusのフォルダ内での右クリックメニューの「スクリプト」サブメニューからそれぞれのシェルスクリプトを呼び出せるようになる。こちらはコミット前の「やっぱりやめとこう」みたいな取り消しができないっぽかったりSubversion管理下のファイルやフォルダの状態が特に表示されなかったりという問題があるので、NautilusSvnが使える環境だったらNautilusSvnを使った方が良さそうだ。どうしてもNautilusSvnが動かないという時のために一応メモしておく。

余談。NautilusSvnでもTortoiseSVNでも微妙に不便な点として、まあこれは仕様上当たり前なのかもしれんけど、ある場所にチェックアウトしたSubversion管理下のフォルダに対するシンボリックリンク(Windowsだったらジャンクション?)からはコミットできないという問題がある。Windowsの場合はフォルダのショートカットがあるから別にいいんだけど、Linux(GNOME)だとGUIからは簡単には「フォルダのショートカット」を作れない(アプリケーションのランチャを作って、コマンドに「nautilus "パス"」と書けば、擬似的にフォルダのショートカットを作ることはできる)ようなので、そこだけ地味に困ってる。

2009年2月9日追記。日本語のメッセージを付けてコミットできない問題に対処してみた。

Page 1/248: 1 2 3 4 5 6 7 8 9 »

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のコメント

最近のつぶやき