<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>サクっとly.com &#187; Subversion</title>
	<atom:link href="http://www.sakuttoly.com/blog/category/dev-env/scm/subversion/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sakuttoly.com</link>
	<description>Be quick !!</description>
	<lastBuildDate>Mon, 06 Sep 2010 23:25:01 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.sakuttoly.com/blog/category/dev-env/scm/subversion/feed" />
		<item>
		<title>さくらインターネットで、Subversion運用と、Eclipse+Subversiveでのsvn+ssh接続と、RedmineとSubversion連携を行う</title>
		<link>http://www.sakuttoly.com/blog/2009/07/sakura_subversion_eclipse_redmine.html</link>
		<comments>http://www.sakuttoly.com/blog/2009/07/sakura_subversion_eclipse_redmine.html#comments</comments>
		<pubDate>Sat, 25 Jul 2009 18:40:11 +0000</pubDate>
		<dc:creator>kuboma</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Redmine]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Poderosa]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[subversive]]></category>
		<category><![CDATA[さくらインターネット]]></category>
		<category><![CDATA[ヤクの毛を刈る]]></category>

		<guid isPermaLink="false">http://www.sakuttoly.com/?p=483</guid>
		<description><![CDATA[				こんにちは。kubomaです。
				今日はさくらインターネットでのSubversion運用と、そのSubversionに対するEclipse+Subversiveからの鍵交換方式SSHの接続設定(svn+ss [...]]]></description>
			<content:encoded><![CDATA[				<p>こんにちは。kubomaです。</p>
				<p>今日はさくらインターネットでのSubversion運用と、そのSubversionに対するEclipse+Subversiveからの鍵交換方式SSHの接続設定(svn+ssh)をするまでの設定について記載します。<br />
				またRedmineとSubversionの連携についても記載します。</p>
				<p>ここではRedmineは別サーバで稼働するケースを想定しています。<br />
				# 実際さくらインターネット上でのRedmine稼働は可能ですが、かなり遅くて実用には向かないと思いました。</p>
				<h3>今回のゴール</h3>
				<ol>
				<li>さくらインターネットのサーバとPoderosaを用いて鍵交換方式のSSH接続を行う</li>
				<li>さくらインターネットのサーバでSubversionを稼働させる</li>
				<li>さくらインターネットのサーバ上のSubversionに、クライアント側(Windows)のEclipse+Subversiveから接続、使用できるようにする</li>
				<li>別サーバのRedmineとさくらインターネットのサーバ上のSubversionを連携させる</li>
				</ol>
				<p>サーバはさくらインターネットのレンタルサーバ、クライアントは自宅のWindows XPです。<br />
				またRedmineが別サーバのCentOS上にインストール済みです。<br />
				Redmineのインストールから稼働までについては、当ブログの以前の記事<a href="http://www.sakuttoly.com/blog/2009/04/redmine_passenger_centos.html">サクッとCentOS 5.3にRedmine + Passenger環境をインストール</a>を参考にしてください。<br />
				<span id="more-483"></span></p>
				<h3>注意点</h3>
				<p>当記事中の<span class="strong">user</span>は、さくらインターネット上のユーザ名を示します。<br />
				また<span class="strong">server</span>は、さくらインターネット上のサーバ名を示します。<br />
				みなさんの環境に合わせて読み替えてください。</p>
				<h3>使用したソフトウェアのバージョン</h3>
				<table>
				<tr>
				<th>さくらインターネットのOS</th>
				<td>FreeBSD 7.1-RELEASE-p6 i386</td>
				<td></td>
				</tr>
				<tr>
				<th>Poderosa</th>
				<td>4.1.0</td>
				<td></td>
				</tr>
				<tr>
				<th>Subversion</th>
				<td>1.6.3</td>
				<td>sourceからインストール</td>
				</tr>
				<tr>
				<th>Eclipse+Subversive</th>
				<td>3.4.2</td>
				<td><a href="http://mergedoc.sourceforge.jp/pleiades_distros3.4.html">Pleiades All in One 3.4.2.20090426のJavaバージョン</a>を使用。</td>
				</tr>
				<tr>
				<th>Redmine</th>
				<td>0.8.3.stable</td>
				<td></td>
				</tr>
				</table>
				<h3>さくらインターネットのサーバとPoderosaを用いて鍵交換方式のSSH接続を行う</h3>
				<p>ここでやっていることは、一般的な鍵交換方式によるSSH接続の設定になります。<br />
				なおさくらインターネットのSSH(sshd)はパスワードによる認証を禁止することは恐らくできません。</p>
				<h4>Poderosaで公開鍵/秘密鍵のペアを作成</h4>
				<p>Poderosaの[ツール]-[SSH鍵作成ウィザード]でDSA-2048bitで鍵を作成し(RSAや2048bit以外のbit数でも上手く行くと思いますが、確認はしていません)、秘密鍵と<span class="strong">OpenSSH形式</span>の公開鍵を保存します。<br />
				秘密鍵はローカルのどこかに置きます。<br />
				公開鍵はWinSCPなどでさくらサーバの以下の場所に置きますので、いったんローカルに保存します。</p>
				<h4>生成した公開鍵を、WinSCPなどでさくらサーバの所定の位置に配置</h4>
				<p>配置場所は、</p>
				<pre>
$HOME/.ssh/authorized_keys2
</pre>
				<p>です。<br />
				既にそのファイルが存在する場合には、置き換えではなく追記するようにします。</p>
				<pre class="console">
	cat id_dsa.put >> authorized_keys2
</pre>
				<h4>Poderosaで接続</h4>
				<p>[ファイル]-[新規TELNET/SSH接続]を実行し、新規接続ダイアログを開きます。<br />
				[SSHパラメータ]の認証方法を<span class="strong">公開鍵</span>とし、パスフレーズは鍵生成時に入力したものを指定、鍵ファイルはローカルに保存した秘密鍵を指定します。<br />
				[OK]ボタンを押し、ログインに成功すれば無事完了です。</p>
				<h3>さくらインターネットのサーバでSubversionを稼働させる</h3>
				<p>Subversionへのインターフェース(スキーマ)はhttp/https/svn/svn+sshなど色々な形があります。<br />
				ここではセキュリティを考慮し、svn+sshスキーマを用いることにします。</p>
				<p>ググると分かりますが、Subversionのインストールについて書かれた様々な文書がWeb上にはあり、またTracとの連携を前提としたものなども多く、結構混乱します。<br />
				公式には何を入れればよいのかは未だによく分かっていませんが、ここでは私が上手くいった方法を記載します。<br />
				これはかなり2つのアーカイブのみでインストールが完了する簡単な方法です。</p>
				<h4 id="subversion_install">Subversionのインストール</h4>
				<p><a href="http://kayakaya.net/d/20090323.html">さくらインターネットに(簡単に)Subversionを入れてみる</a>の手順に従って行いました。<br />
				~/archives以下で作業し、$HOME/local以下にインストールしています。</p>
				<pre class="console">
[user@server ~/archives]$ wget http://subversion.tigris.org/downloads/subversion-1.6.3.tar.gz
[user@server ~/archives]$ wget http://subversion.tigris.org/downloads/subversion-deps-1.6.3.tar.gz
[user@server ~/archives]$ tar zxvf subversion-1.6.3.tar.gz
[user@server ~/archives]$ tar zxvf subversion-deps-1.6.3.tar.gz
[user@server ~/archives]$ cd subversion-1.6.3
[user@server ~/archives/subversion-1.6.3]$ ./configure --prefix=$HOME/local --with-ssl --without-berkeley-db
[user@server ~/archives/subversion-1.6.3]$ gmake clean
[user@server ~/archives/subversion-1.6.3]$ gmake
[user@server ~/archives/subversion-1.6.3]$ gmake install
</pre>
				<p>今のSubversionはデフォルトでBerkeleyDBではなくFSFSを使用するため、configure時に&#8211;without-berkeley-dbを指定しているものと思います。</p>
				<p>インストール後、$HOME/local/binにPATHが通ってる場合、</p>
				<pre class="console">
[user@server ~/archives/subversion-1.6.3]$ which svn
/home/user/local/bin/svn
</pre>
				<p>となるはずです。</p>
				<h4>svnコマンドの文字化け(LANGの設定変更？)</h4>
				<p>上記インストール後、</p>
				<pre class="console">
svn --version
</pre>
				<p>などを実行すると、</p>
				<pre class="console">
svn, ?\227?\131?\144?\227?\131?\188?\227?\130?\184?\227?\131?\167?\227?\131?\179 1.6.3 (r38063)
   ?\227?\130?\179?\227?\131?\179?\227?\131?\145?\227?\130?\164?\227?\131?\171?\230?\151?\165?\230?\153?\130: Jul 25 2009, 12:37:00

Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

?\228?\187?\165?\228?\184?\139?\227?\129?\174?\227?\131?\170?\227?\131?\157?\227?\130?\184?\227?\131?\136?\227?\131?\170?\227?\130?\162?\227?\130?\175?\227?\130?\187?\227?\130?\185 (RA) ?\227?\131?\162?\227?\130?\184?\227?\131?\165?\227?\131?\188?\227?\131?\171?\227?\129?\140?\229?\136?\169?\231?\148?\168?\227?\129?\167?\227?\129?\141?\227?\129?\190?\227?\129?\153:

(後略)
</pre>
				<p>という風に文字化けして表示されることがあります。</p>
				<p>どうも環境変数LANGがらみの問題らしいですが、私自身はこの現象があまり理解できていません。<br />
				とりあえず<a href="http://d.hatena.ne.jp/gnarl/20080521/1211335942">さくらインターネット、svn、文字化け</a>にあるように、環境変数LANGをUTF-8にすると化けないようです。</p>
				<pre class="console">
[user@server ~/.ssh]$ svn
?\228?\189?\191?\231?\148?\168?\230?\150?\185?\230?\179?\149?\227?\130?\146?\231?\159?\165?\227?\130?\138?\227?\129?\159?\227?\129?\132?\227?\129?\168?\227?\129?\141?\227?\129?\175 'svn help' ?\227?\129?\168?\230?\137?\147?\227?\129?\163?\227?\129?\166?\227?\129?\143?\227?\129?\160?\227?\129?\149?\227?\129?\132?\227?\128?\130
[user@server ~/.ssh]$ echo $LANG
ja_JP.UTF-8
[user@server ~/.ssh]$ export LANG=UTF-8
[user@server ~/.ssh]$ echo $LANG
UTF-8
[user@server ~/.ssh]$ svn
Type 'svn help' for usage.
</pre>
				<p>結局元々.bashrcで</p>
				<pre>export LANG=ja_JP.UTF-8</pre>
<p>と指定していたのを、</p>
<pre>export LANG=UTF-8</pre>
				<p>と変更しました。</p>
				<h4 id="subversion_repos">Subversionのレポジトリ作成</h4>
				<p>例えば<span class="strong">test</span>というレポジトリを作ってみます。</p>
				<pre class="console">
[user@server ~]$ mkdir -p svn/repos
[user@server ~]$ cd svn/repos
[user@server ~/svn/repos]$ svnadmin create test
[user@server ~/svn/repos]$ cd ~/temp
[user@server ~/temp]$ svn co file:///home/user/svn/repos/test test
[user@server ~/temp]$ cd test
[user@server ~/temp/test]$ svn mkdir trunk branches tags
[user@server ~/temp/test]$ svn commit -m "first commit"
[user@server ~/temp/test]$ cd ..
[user@server ~/temp]$ rm -rf test
</pre>
				<p>最後に、以下のように<span class="strong">ローカルからfileスキーマ</span>接続し、先ほどコミットしたtrunk/branches/tagsが確認できればOKとなります。</p>
				<pre class="console">
[user@server ~]$ svn list file:///home/user/svn/repos/test
branches/
tags/
trunk/
</pre>
				<p>$HOME/svn/repos/testにテスト用のレポジトリがあり、branches/tags/trunkというディレクトリが出来ている場合、上記のようになるはずです。</p>
				<h3>さくらインターネットのサーバ上のSubversionに、クライアント側(Windows)のEclipse+Subversiveから接続、使用できるようにする</h3>
				<p>前章で無事Subversionが稼働していますが、httpやhttpsによる公開は行っていない状態です。<br />
				ではどうやって自分のクライアント側から利用するかですが、Subversionの鍵交換方式によるsvn+sshスキーマを利用します。</p>
				<p>これは基本的に当ブログの過去の記事<a href="http://www.sakuttoly.com/blog/2009/06/subversion_ssh.html">Subversiveで鍵交換方式によるSSH接続</a>の手順で行けますが、2点注意点があります。<br />
				1点はPuttyではなくPoderosaを利用している点、もう1点はさくらインターネットのレンタルサーバを利用している点、です。</p>
				<h4>Poderosaで作ったSECSH形式の秘密鍵をOpenSSH形式に変換する</h4>
				<p>上記の記事ではPuttyで作成したSSHの秘密鍵(Putty形式)をOpenSSH形式に変換することがポイントですが、今回はPoderosaを使用しています。<br />
				この記事の冒頭、Poderosaで生成した秘密鍵はSECSH形式でありOpenSSH形式ではありませんので、同じくOpenSSH形式に変換する必要があります。<br />
				(OpenSSH形式に変換するのは、SubversiveがOpenSSH形式の鍵を必要とするからです。)</p>
				<p>Poderosa自身にはこの機能はありませんので、Puttyを利用します。<br />
				具体的な手順は、<br />
				<a href="http://memo.hirosiki.jp/article/106311259.html">SSHクライアントの秘密鍵／公開鍵についてまとめ</a>の後半「SECSH←→OpenSSH形式の相互変換はどうするの？編：」を参照してください。<br />
				上記の手順でOpenSSH形式に変換できます。</p>
				<h4>svn+sshスキーマでのさくらインターネットサーバへの接続が、<span class="strong">svnserve: command not found</span>により失敗する</h4>
				<p>これはサーバにおいてSSHのコマンド検索パス上にSubversionの各実行ファイルが存在しないことが原因です。</p>
				<p><a href="http://d.hatena.ne.jp/ntaku/20080921/1221930088">さくらサーバでsvn+sshを利用する方法(Linux/Mac)</a>や<a href="http://blog.livedoor.jp/memozilla/archives/54933239.html">さくらインターネットに設置した subversion で ssh ログイン時に発生するエラー</a>を参照していただくと分かりますが、SSHのコマンド検索パスと.bashrcなどの各種シェル環境設定ファイル上で設定したPATHは関連していないようです。</p>
				<p>私の環境では
				<pre>$HOME/local/bin</pre>
<p>以下にSubversionのコマンド群がインストールされていますが、$HOME以下でSSHのコマンド検索パス上にあるのは
<pre>$HOME/bin</pre>
				<p>だけです。<br />
				そのためコマンドが見つからないというエラーが発生します。<br />
				これを解決するには、以下のようにシンボリックリンクを貼るなどして、
				<pre>$HOME/bin</pre>
<p>にSubversionのコマンド群が存在するようにします。</p>
<pre class="console">
[user@server ~]$ ln -s $HOME/local/bin $HOME/bin
</pre>
				<h3>別サーバのRedmineとさくらインターネットのサーバ上のSubversionを連携させる</h3>
				<p>RedmineとSubversionの連携設定をします。<br />
				タイトルに<span class="strong">別サーバの</span>とありますが、同一サーバである場合も同じ設定で動きそうです。(fileスキーマを使う方が簡単かもしれませんが)</p>
				<h4>Redmineの稼働について</h4>
				<p>今回は別サーバですでにRedmineが稼働しているものとします。<br />
				Redmineのインストールから稼働までについては、当ブログの以前の記事<a href="http://www.sakuttoly.com/blog/2009/04/redmine_passenger_centos.html">サクッとCentOS 5.3にRedmine + Passenger環境をインストール</a>を参考にしてください。</p>
				<h4>RedmineとSubversionの連携1: Redmineの入ったサーバで、Subversionのコマンド群を利用可能にする</h4>
				<p><a href="http://redmine.jp/guide/RedmineRepositories/">プロジェクト管理ソフトウェアRedmine 日本語情報 (unofficial) &#8211; リポジトリ</a>などに記載のある通り、RedmineとSubversionを連携させる場合、RedmineのサーバでSubversionのコマンド群が利用可能になっている必要があります。<br />
				ここでは当記事の<a href="#subversion_install">Subversionのインストール</a>などに従い、Subversionを適切にインストールしたものとします。</p>
				<h4>RedmineとSubversionの連携2: RedmineサーバからSubversionサーバに対し、Redmine(Apache)の実行ユーザで、パスフレーズの入力なしで(non-interactive, ノンパス)SSH接続可能にする</h4>
				<p>今回さくらインターネット上に構築したSubversionは、http/httpsスキーマでの公開をしていないため、svn+sshスキーマで接続することになります。<br />
				この場合RedmineサーバからSubversionサーバに対し、Redmine(Apache)の実行ユーザで、パスフレーズの入力なしに鍵交換方式のSSH接続が出来ている必要があります。<br />
				<a href="http://webos-goodies.jp/archives/50672669.html">ssh-agent でパスフレーズの入力を省く</a>などを参考にして、それらの設定を行ってください。</p>
				<p>これらの設定が完了した場合には、Redmineが稼働しているサーバのRedmine(Apache)の実行ユーザで以下のコマンドを実行し、パスワードを入力することなしに結果が返ってくるはずです。</p>
				<pre class="console">
[redmine@redmine ~]$ svn list svn+ssh://user@server/home/user/svn/repos/test
branches/
tags/
trunk/
</pre>
				<p>これは、当記事の<a href="#subversion_repos">Subversionのレポジトリ作成</a>で確認したローカルからのfileスキーマでの接続確認の、svn+sshスキーマ版となります。<br />
				ここではredmineユーザにてコマンドを実行しています。<br />
				接続URLで<span class="strong">user@server</span>という風にさくらインターネット上のユーザを指定していることに注意してください。</p>
				<h4>RedmineとSubversionの連携3: Redmine上でリポジトリの設定を行い、Redmine上からリポジトリを参照可能にする</h4>
				<p>ようやく最後です。<br />
				Redmine上からさくらインターネット上のSubversionへの参照を行います。</p>
				<p>まずプロジェクトの[設定]-[リポジトリ]から、SCMの設定を行います。</p>
				<table>
				<tr>
				<th>入力欄</th>
				<th>入力例</th>
				</tr>
				<tr>
				<th>SCM</th>
				<th>Subversion</th>
				</tr>
				<tr>
				<th>URL</th>
				<td>svn+ssh://server/home/user/svn/repos/test<br />(svn+ssh://[サーバ][リポジトリのフルパス]</td>
				</tr>
				<tr>
				<th>ログイン</th>
				<td>さくらインターネット上のユーザ名</td>
				</tr>
				<tr>
				<th>パスワード</th>
				<td>なし</td>
				</tr>
				</table>
				<p>次にメニューの[ファイル]等をクリックし、いったんプロジェクトメニューを再描画します。<br />
				するとメニューに[リポジトリ]が現れる([設定]-[リポジトリ]とは別です)ので、クリックします。<br />
				これで以下のようにSubversionのリポジトリが表示されれば成功です。</p>
				<p><a href="http://www.sakuttoly.com/wp-content/uploads/2009/07/repository.png"><img src="http://www.sakuttoly.com/wp-content/uploads/2009/07/repository-300x117.png" alt="repository" title="repository" width="300" height="117" class="aligncenter size-medium wp-image-500" /></a></p>
				<p>上手く行ったでしょうか？<br />
				Redmineのバージョンに依るかもしれませんが、私の環境(0.8.3.stable)では以下のエラーメッセージが画面上に表示されました。</p>
				<pre class="se">
リポジトリに、エントリ/リビジョンが存在しません。
</pre>
				<p>Redmineのログを見てみると、以下のようなエラーが出ています。</p>
				<pre class="caution">
Error parsing svn output: #&lt;REXML::ParseException: No close tag for /lists/list&gt;
/usr/lib/ruby/1.8/rexml/parsers/treeparser.rb:28:in `parse'
/usr/lib/ruby/1.8/rexml/document.rb:205:in `build'
/usr/lib/ruby/1.8/rexml/document.rb:42:in `initialize'
/home/redmine/lib/redmine/scm/adapters/subversion_adapter.rb:85:in `new'
/home/redmine/lib/redmine/scm/adapters/subversion_adapter.rb:85:in `entries'
/home/redmine/lib/redmine/scm/adapters/abstract_adapter.rb:177:in `call'
/home/redmine/lib/redmine/scm/adapters/abstract_adapter.rb:177:in `shellout'
/home/redmine/lib/redmine/scm/adapters/abstract_adapter.rb:175:in `popen'
/home/redmine/lib/redmine/scm/adapters/abstract_adapter.rb:175:in `shellout'
/home/redmine/lib/redmine/scm/adapters/abstract_adapter.rb:165:in `shellout'
/home/redmine/lib/redmine/scm/adapters/subversion_adapter.rb:82:in `entries'
/home/redmine/app/models/repository.rb:63:in `entries'
/home/redmine/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb:173:in `send'
/home/redmine/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb:173:in `method_missing'
/home/redmine/app/controllers/repositories_controller.rb:71:in `show'
/home/redmine/vendor/rails/actionpack/lib/action_controller/base.rb:1166:in `send'
/home/redmine/vendor/rails/actionpack/lib/action_controller/base.rb:1166:in `perform_action_without_filters'
/home/redmine/vendor/rails/actionpack/lib/action_controller/filters.rb:579:in `call_filters'
/home/redmine/vendor/rails/actionpack/lib/action_controller/filters.rb:572:in `perform_action_without_benchmark'
/home/redmine/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
/usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
/home/redmine/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
/home/redmine/vendor/rails/actionpack/lib/action_controller/rescue.rb:201:in `perform_action_without_caching'
/home/redmine/vendor/rails/actionpack/lib/action_controller/caching/sql_cache.rb:13:in `passenger_orig_perform_action'
/home/redmine/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:33:in `cache'
/home/redmine/vendor/rails/activerecord/lib/active_record/query_cache.rb:8:in `cache'
/home/redmine/vendor/rails/actionpack/lib/action_controller/caching/sql_cache.rb:12:in `passenger_orig_perform_action'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/railz/request_handler.rb:53:in `perform_action'
/home/redmine/vendor/rails/actionpack/lib/action_controller/base.rb:529:in `send'
/home/redmine/vendor/rails/actionpack/lib/action_controller/base.rb:529:in `process_without_filters'
/home/redmine/vendor/rails/actionpack/lib/action_controller/filters.rb:568:in `process_without_session_management_support'
/home/redmine/vendor/rails/actionpack/lib/action_controller/session_management.rb:130:in `process'
/home/redmine/vendor/rails/actionpack/lib/action_controller/base.rb:389:in `process'
/home/redmine/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:149:in `handle_request'
/home/redmine/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:107:in `dispatch'
/home/redmine/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:104:in `synchronize'
/home/redmine/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:104:in `dispatch'
/home/redmine/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:120:in `dispatch_cgi'
/home/redmine/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:35:in `dispatch'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/railz/request_handler.rb:38:in `process_request'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/abstract_request_handler.rb:197:in `main_loop'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/railz/application_spawner.rb:340:in `start_request_handler'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/railz/application_spawner.rb:298:in `handle_spawn_application'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/utils.rb:176:in `safe_fork'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/railz/application_spawner.rb:296:in `handle_spawn_application'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/abstract_server.rb:332:in `__send__'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/abstract_server.rb:332:in `main_loop'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/abstract_server.rb:182:in `start_synchronously'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/abstract_server.rb:149:in `start'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/railz/application_spawner.rb:192:in `start'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/spawn_manager.rb:260:in `spawn_rails_application'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/abstract_server_collection.rb:121:in `lookup_or_add'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/spawn_manager.rb:254:in `spawn_rails_application'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/abstract_server_collection.rb:75:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/abstract_server_collection.rb:74:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/spawn_manager.rb:253:in `spawn_rails_application'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/spawn_manager.rb:148:in `spawn_application'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/spawn_manager.rb:285:in `handle_spawn_application'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/abstract_server.rb:332:in `__send__'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/abstract_server.rb:332:in `main_loop'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/lib/phusion_passenger/abstract_server.rb:182:in `start_synchronously'
/usr/lib/ruby/gems/1.8/gems/passenger-2.1.3/bin/passenger-spawn-server:50
...
No close tag for /lists/list
Line:
Position:
Last 80 unconsumed characters:
Output was:
 &lt;?xml version=&quot;1.0&quot;?&gt;
&lt;lists&gt;
&lt;list
   path=&quot;svn+ssh://server/home/user/svn/repos/test&quot;&gt;
Rendering template within layouts/base
Completed in 1.37096 (0 reqs/sec) | Rendering: 0.02282 (1%) | DB: 0.01060 (0%) | 500 Internal Server Error
</pre>
				<p>ググって見ると、<a href="http://d.hatena.ne.jp/devillikeaangel/20090521/1242903090">Redmineとsvnの連携でエラー</a>経由で<a href="http://www.redmine.org/issues/816">Redmine公式のチケット</a>が見つかりました。<br />
				<a href="http://www.redmine.org/issues/816#note-10">そのコメント中では</a>、<span class="strong">lib/redmine/scm/adapters/subversion_adapter.rb</span>ファイルの</p>
				<pre class="console">
cmd = "#{SVN_BIN} list --xml #{target(path)}@#{identifier}"
</pre>
				<p>を</p>
				<pre class="console">
cmd = "#{SVN_BIN} list --xml #{target(path)}@#{identifier} 2>&#038;1"
</pre>
				<p>に変更しろと言っていますので、その通りにしてみます。<br />
				その上で再度リポジトリ画面にアクセスすると、以下のような画面になるはずです。</p>
				<p><a href="http://www.sakuttoly.com/wp-content/uploads/2009/07/repository.png"><img src="http://www.sakuttoly.com/wp-content/uploads/2009/07/repository-300x117.png" alt="repository" title="repository" width="300" height="117" class="aligncenter size-medium wp-image-500" /></a></p>
				<h3>まとめ</h3>
				<p>長々と書きましたが、無事さくらインターネット上のSubversionに対して、</p>
				<ol>
				<li>さくらインターネットのサーバ上のSubversionに、クライアント側(Windows)のEclipse+Subversiveから接続、使用できるようにする</li>
				<li>別サーバのRedmineとさくらインターネットのサーバ上のSubversionを連携させる</li>
				</ol>
				<p>が出来たでしょうか？</p>
				<p>はまりどころが大変多いですので、皆様気をつけてください。<br />
				当記事の記述にも私の理解不足などの理由から不正確な点があると思います。</p>
				<h3>余談</h3>
				<p>私は本日土曜日の半日ほどをこれらの作業に費やしています(さらに半日は、この記事の執筆に費やしています)<br />
				私のスキルが不足していることは当然としても、一つはまって、解決してはまた一つはまって、を繰り返しているなかで、<a href="http://0xcc.net/">高林哲さん</a>のいうバッドシグナル(現<a href="http://gihyo.jp/magazine/wdpress">Web+DB Press</a>で連載中の記事<a href="http://0xcc.net/blog/archives/000210.html">バッドシグナル通信</a>)や<a href="http://0xcc.net/blog/archives/000210.html">ヤクの毛を刈る</a>を痛感した一日となりました。。。<br />
				なお高林哲さんと言えば、<a href="http://0xcc.net/misc/bad-knowhow.html">バッドノウハウと「奥が深い症候群」</a>もプログラマ必読です。</p>
				<div class="amazlet-box" style="margin-bottom:0px;">
				<div class="amazlet-image" style="float:left;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274066800/sakutto0b-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51CaMHjJPSL._SL160_.jpg" alt="Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)" style="border: none;" /></a></div>
				<div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%">
				<div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274066800/sakutto0b-22/ref=nosim/" name="amazletlink" target="_blank">Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)</a>
				<div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/4274066800/sakutto0b-22/ref=nosim/" title="Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)" target="_blank">amazlet</a> at 09.07.26</div>
				</div>
				<div class="amazlet-detail">Mike Mason <br />オーム社 <br />売り上げランキング: 13561</div>
				<div class="amazlet-review" style="margin-top:10px; margin-bottom:10px">
				<div class="amazlet-review-average" style="margin-bottom:5px">おすすめ度の平均: <img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-0.gif" alt="4.0" /></div>
				<p><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> trunk,branches,tagsでとまどったら<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-2-0.gif" alt="2" /> Subversionを使う上で&#8221;は&#8221;よい本だと思う<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> 日本語のSubversion解説本の最高作</div>
				<div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274066800/sakutto0b-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div>
				</div>
				<div class="amazlet-footer" style="clear: left"></div>
				</div>
]]></content:encoded>
			<wfw:commentRss>http://www.sakuttoly.com/blog/2009/07/sakura_subversion_eclipse_redmine.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.sakuttoly.com/blog/2009/07/sakura_subversion_eclipse_redmine.html" />
	</item>
		<item>
		<title>Subversiveで鍵交換方式によるSSH接続</title>
		<link>http://www.sakuttoly.com/blog/2009/06/subversion_ssh.html</link>
		<comments>http://www.sakuttoly.com/blog/2009/06/subversion_ssh.html#comments</comments>
		<pubDate>Mon, 22 Jun 2009 16:13:15 +0000</pubDate>
		<dc:creator>shirotter</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[subversive]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[鍵交換方式]]></category>

		<guid isPermaLink="false">http://www.sakuttoly.com/?p=412</guid>
		<description><![CDATA[				本日はSubversiveを鍵交換方式によるSSHで使う方法を紹介します｡
				Subversiveは､Eclipse 3.4(Ganymede)からSubcripseに代わって標準のSubversion用ク [...]]]></description>
			<content:encoded><![CDATA[				<p>本日は<a href="http://www.eclipse.org/subversive/">Subversive</a>を<span class="strong">鍵交換方式によるSSH</span>で使う方法を紹介します｡</p>
				<p>Subversiveは､<a href="http://www.eclipse.org/">Eclipse</a> 3.4(Ganymede)から<a href="http://subclipse.tigris.org/">Subcripse</a>に代わって標準の<a href="http://subversion.tigris.org/">Subversion</a>用クライアントとなっています｡</p>
				<p>仕事ではmod_dav_svn経由でのhttpアクセスでSubversionを使っているのですが､個人使用でのSubversionサーバーへのアクセスにはSSHを使用することにしました｡</p>
				<p><a href="http://git-scm.com/">Git</a>によるバージョン管理も考えていましたが､TortoiseSVNのようにこれさえ入れておけば手軽に利用出来る!!というツールが今のところ無いのと､<a href="http://sourceforge.net/projects/gitextensions/">Git Extensions</a>を使ってみたら上手く動いてくれなかったので､そちらで悩むよりは手軽に使い慣れたSubversionでサクッとやってしまおうということからGitは今回は諦めました｡</p>
				<p>でも分散リポジトリの概念と<a href="http://gihyo.jp/magazine/wdpress/archive/2009/vol50">WEB + DB　PRESS Vol.50に掲載されているGit特集</a>でのテクニックには惹かれるものがありますので､そのうちGitに移行しようとは思っているんですが･･･</p>
				<p>そんなこんなでサクッとSubversionでの環境を整えてしまおうかと思っていたのですが､Eclipse標準のSubversiveによるSSHでのアクセスが出来るようになるまで結構ハマってしまったのでここに手順をメモしておこうと思います｡</p>
				<p><span id="more-412"></span></p>
				<h3>前提</h3>
				<p>今回は既にパスフレーズを設定した鍵交換方式によるSSHでの接続が可能なサーバーがあり､既にSubversionのリポジトリが利用可能であるということを前提として話を進めていきます｡</p>
				<p>鍵交換方式によるSSHでの接続は既に色々なサイトで解説がされているので､そちらを参考にしてください｡</p>
				<ul>
				<li><a href="http://www.atmarkit.co.jp/flinux/rensai/linuxtips/429usekeyssh.html">鍵交換方式のsshでアクセスするには<a></li>
				<li><a href="http://www.jitaku-server.net/ssh_crypto.html">公開鍵暗号でSSHのセキュリティを高める</a></li>
				</ul>
				<p>またSubversionのインストールについては､<a href="http://rpmrepo.org/RPMforge">RPMforge</a>リポジトリをyumに追加した場合にSubversion 1.6.2が利用可能であったのでそちらを利用しました｡</p>
				<h3>手順</h3>
				<p>上記前提をクリアしているとして､今回本記事で紹介する手順は以下の通りとなっています｡</p>
				<ol>
				<li>OpenSSH方式の秘密鍵を生成する</li>
				<li>EclipseのSubversiveで｢SVN + SSH｣で接続する</li>
				</ol>
				<h3>使用したソフトウェアのバージョン</h3>
				<p>今回使用したソフトウェアのバージョンは以下のようになっています｡</p>
				<table>
				<caption>SVNサーバー側</caption>
				<tr>
				<th><a href="http://www.centos.org/">CentOS</a></th>
				<td>5.3 x86_64</td>
				</tr>
				<tr>
				<th><a href="http://subversion.tigris.org/">Subversion</a></th>
				<td>1.6.2</td>
				</tr>
				<tr>
				<th><a href="http://www.openssh.com/">OpenSSH</a></th>
				<td>4.3p2-29.el5</td>
				</tr>
				</table>
				<table>
				<caption>クライアント側</caption>
				<tr>
				<th><a href="http://www.eclipse.org/">Eclipse</a></th>
				<td><a href="http://mergedoc.sourceforge.jp/">Pleiades</a> All in One 3.4.2.20090426</td>
				</tr>
				<tr>
				<th><a href="http://www.eclipse.org/subversive/">Subversive</a></th>
				<td>0.7.7.I20090224_1900(Pleiades付属)</td>
				</tr>
				<tr>
				<th><a href="http://yebisuya.dip.jp/Software/PuTTY/">PuTTY</a></th>
				<td>0.60 ごった煮版</td>
				</tr>
				</table>
				<h3>Subversive on SSH</h3>
				<p>実現までに個人的に色々とハマり時間は掛かってしまったのですが､手順さえ分かってしまえば実はやることはほとんどありません｡</p>
				<h4>OpenSSH方式の秘密鍵を生成する</h4>
				<p>まず解決するまで一番時間が掛かってしまった秘密鍵の生成方法です｡</p>
				<p>サーバーへの鍵交換方式による秘密鍵の生成にPuTTYに同梱されているputtygen.exeを使用していたのですが､どうやらそれで生成した秘密鍵は<span class="strong">OpenSSH形式の鍵では無い</span>ようです｡</p>
				<p>これに気付くまで何度も設定を試して接続しては/var/log/secureをtailするということの繰り返しでした｡<br />
				結局ログからは何も分からなかったのですが･･･</p>
				<p>ということでOpenSSH形式の秘密鍵の生成方法です｡</p>
				<p>手順は至って簡単♪</p>
				<p>まずPuTTYに同梱されているputtygen.exeを開きます｡</p>
				<p><a href="http://www.sakuttoly.com/blog/2009/06/subversion_ssh.html/puttygen" rel="attachment wp-att-416"><img src="http://www.sakuttoly.com/wp-content/uploads/2009/06/puttygen-150x150.png" alt="puttygen" title="puttygen" width="150" height="150" class="aligncenter size-thumbnail wp-image-416" /></a></p>
				<p>『読み込み』ボタンを押してPuTTY形式の秘密鍵を読み込んでください｡</p>
				<p><a href="http://www.sakuttoly.com/blog/2009/06/subversion_ssh.html/puttygen2" rel="attachment wp-att-421"><img src="http://www.sakuttoly.com/wp-content/uploads/2009/06/puttygen2-150x150.png" alt="puttygen2" title="puttygen2" width="150" height="150" class="aligncenter size-thumbnail wp-image-421" /></a></p>
				<p>パスフレーズを設定している場合にはパスフレーズを入力し､正常に秘密鍵を読み込むことが出来たら､メニューバーの『変換』 &#8211;> 『OpenSSH形式にエクスポート』としてOpenSSH形式の秘密鍵を出力します｡</p>
				<p><a href="http://www.sakuttoly.com/blog/2009/06/subversion_ssh.html/puttygen3" rel="attachment wp-att-422"><img src="http://www.sakuttoly.com/wp-content/uploads/2009/06/puttygen3-150x150.png" alt="puttygen3" title="puttygen3" width="150" height="150" class="aligncenter size-thumbnail wp-image-422" /></a></p>
				<p>以上でOpenSSH形式の秘密鍵の生成は完了です｡</p>
				<h4>EclipseのSubversiveで｢SVN + SSH｣で接続する</h4>
				<p>ここからは実際にSSHでSubversionのリポジトリを参照する手順となります｡</p>
				<p>なおSubversionのリポジトリのパスは以下のようになっていると仮定します｡</p>
				<pre>
/home/svn/test
</pre>
				<p>では､Eclipseから新規プロジェクトで『SVNプロジェクト』を選択します｡</p>
				<p><a href="http://www.sakuttoly.com/blog/2009/06/subversion_ssh.html/project" rel="attachment wp-att-423"><img src="http://www.sakuttoly.com/wp-content/uploads/2009/06/project-150x150.png" alt="project" title="project" width="150" height="150" class="aligncenter size-thumbnail wp-image-423" /></a></p>
				<p>｢リポジトリー･ロケーション情報の入力｣画面での『一般』タブで以下のように入力します｡</p>
				<p><a href="http://www.sakuttoly.com/blog/2009/06/subversion_ssh.html/subversive01" rel="attachment wp-att-424"><img src="http://www.sakuttoly.com/wp-content/uploads/2009/06/subversive01-150x150.png" alt="subversive01" title="subversive01" width="150" height="150" class="aligncenter size-thumbnail wp-image-424" /></a></p>
				<table>
				<tr>
				<th>入力欄</th>
				<th>入力例</th>
				</tr>
				<tr>
				<th>URL</th>
				<td>svn+ssh://www.sakuttoly.com/home/svn/test<br />(svn+ssh://ドメイン名/リポジトリパス)</td>
				</tr>
				<tr>
				<th>ユーザ</th>
				<td>SSHでアクセスするユーザ名</td>
				</tr>
				</table>
				<p>そして『SSH設定』タブで以下のように秘密鍵を指定します｡</p>
				<p><a href="http://www.sakuttoly.com/blog/2009/06/subversion_ssh.html/subversive02" rel="attachment wp-att-425"><img src="http://www.sakuttoly.com/wp-content/uploads/2009/06/subversive02-150x150.png" alt="subversive02" title="subversive02" width="150" height="150" class="aligncenter size-thumbnail wp-image-425" /></a></p>
				<table>
				<tr>
				<th>入力欄</th>
				<th>入力例</th>
				</tr>
				<tr>
				<th>ポート</th>
				<td>SSHでアクセスするポート(デフォルトは22)</td>
				</tr>
				<tr>
				<th>認証</th>
				<td>｢秘密鍵｣を選択</td>
				</tr>
				<tr>
				<th>ファイル</th>
				<td>OpenSSH形式の秘密鍵ファイル</td>
				</tr>
				<tr>
				<th>パスフレーズ</th>
				<td>秘密鍵のパスフレーズ</td>
				</tr>
				</table>
				<p>上記のように入力して『次へ』を押して｢リソースの選択｣画面が表示され､Subversionリポジトリが参照出来たら成功です｡</p>
				<p><a href="http://www.sakuttoly.com/blog/2009/06/subversion_ssh.html/project1" rel="attachment wp-att-426"><img src="http://www.sakuttoly.com/wp-content/uploads/2009/06/project1-150x150.png" alt="project1" title="project1" width="150" height="150" class="aligncenter size-thumbnail wp-image-426" /></a></p>
				<h4>補足</h4>
				<p>&#8220;svn+ssh://&#8221;による接続の記述方式として､</p>
				<pre>
svn+ssh://ユーザ名@ドメイン名/リポジトリのフルパス
</pre>
				<p>という方法もありますが､今回のSubversiveにおいては認証項目のユーザの箇所にてユーザ名を入力していない場合には､結局SSH接続時に再度質問されるという動作をしました｡<br />
				また､SSH設定を事前に入力していない場合にもSSH接続時に質問されます｡</p>
				<p>なので一度で接続出来るようにする方法は本記事で紹介した接続方法が手間も掛からずに良いかと思われます｡</p>
				<p>それから､今回のことを実現するために色々と調べていると同じことを実現するために､環境変数<span class="strong">&#8220;SVN_SSH&#8221;</span>にPuTTYに同梱されているplinkw.exeのパスを設定していたりする方法も見掛けました｡</p>
				<p>特にこの環境変数を設定しなくてもSubversionを参照することが出来たこともこちらに書いておくことにします｡</p>
				<h3>参考リンク</h3>
				<ul>
				<li><a href="http://www10.atpages.jp/~terubou/dic/index.php?IT%2F90.%E3%83%A1%E3%83%A2%E6%9B%B8%E3%81%8D%2F%E3%81%AF%E3%81%BE%E3%82%8A%E3%83%8D%E3%82%BF">私はこれにハマリました。@UAYAMA de WIKI</a></li>
				<li><a href="http://www10.atpages.jp/~terubou/dic/index.php?IT%2F10.%E9%96%8B%E7%99%BA%E3%83%84%E3%83%BC%E3%83%AB%2F%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%2FPuTTY#b6cda506">PuTTY@UAYAMA de WIKI</a></li>
				</ul>
				<div class="amazlet-box" style="margin-bottom:0px;">
				<div class="amazlet-image" style="float:left;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274066800/sakutto0b-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51CaMHjJPSL._SL160_.jpg" alt="Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)" style="border: none;" /></a></div>
				<div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%">
				<div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274066800/sakutto0b-22/ref=nosim/" name="amazletlink" target="_blank">Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)</a>
				<div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/4274066800/sakutto0b-22/ref=nosim/" title="Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)" target="_blank">amazlet</a> at 09.06.22</div>
				</div>
				<div class="amazlet-detail">Mike Mason <br />オーム社 <br />売り上げランキング: 15652</div>
				<div class="amazlet-review" style="margin-top:10px; margin-bottom:10px">
				<div class="amazlet-review-average" style="margin-bottom:5px">おすすめ度の平均: <img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-0.gif" alt="4.0" /></div>
				<p><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> trunk,branches,tagsでとまどったら<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-2-0.gif" alt="2" /> Subversionを使う上で&#8221;は&#8221;よい本だと思う<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> 日本語のSubversion解説本の最高作</div>
				<div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274066800/sakutto0b-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div>
				</div>
				<div class="amazlet-footer" style="clear: left"></div>
				</div>
]]></content:encoded>
			<wfw:commentRss>http://www.sakuttoly.com/blog/2009/06/subversion_ssh.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.sakuttoly.com/blog/2009/06/subversion_ssh.html" />
	</item>
	</channel>
</rss>
