[[戻る>DoldoWorkz#computerspeciality]]

*SubversionをWindowsで使う [#s3545e22]
 Subversionを使った際のメモを書いていきます。
#hr
#contents
#hr
*参考にした本 [#pa79299a]
-[[Amazon-入門Subversion―Windows/Linux対応 (単行本):http://www.amazon.co.jp/dp/4798013730]]~
WindowsでSubversionを使うなら必ず欲しいおすすめの1冊です。~

*参考にしたページ [#h341eb0a]
~
*Subversionのインストール方法[#yee5dc1d]
**「TortoiseSVN」をインストール [#e412a657]
まず、クライアント側には「TortoiseSVN」と「Language packs」をダウンロードしてインストールします。~
-[[tortoisesvn.tigris.org:http://tortoisesvn.tigris.org/]]~
「TortoiseSVN」と「Language packs」が置いてあるページです~

ここのページの左上にある「Download」を押すと出てくるページでダウンロード出来ます。~
私は32bit版「&color(blue){''TortoiseSVN''};」の「&color(blue){''TortoiseSVN-1.4.6.11647-win32-svn-1.4.6.msi''};」
#ref(TortoiseSVN_DL.jpg)
日本語化するための32bit版「&color(blue){''Language packs  Japanese 32bit Setup''};」の「&color(blue){''LanguagePack-1.4.6.11647-win32-ja.exe''};」
#ref(Language packs_DL.jpg)
をインストールしています。~
「TortoiseSVN」には「Subversion」も含まれていますので、&color(blue){''ローカル環境で使う場合はこれだけでOK''};です。~

**TortoiseSVNに設定する [#zf540749]
デスクトップを右クリック→[TortoiseSVN]→[Settings]~
~
以下のような設定ウインドウが開きます。
#ref(Language.jpg)
Languageを「日本語」に直します。~
ここで日本語に選択出来ない場合は前記の「LanguagePack」がインストールされていないのでインストールして下さい。~
[適用(A)]→[OK]を押して設定を一度終了します~
~
デスクトップを右クリック→[TortoiseSVN]→[設定(S)]~
~
以下のような設定ウインドウが開きます(さっきの設定ウインドウの日本語化したもの)~
#ref(Settings.jpg)
「除外/無視するパターン(P)」でSubversionで無視する拡張子を指定します。~
ここで気をつけなければいけない事は、大文字・小文字を区別してしまう事です。~
通常は「*.bak *.Bak *.BAK」を指定しておけば良いでしょう。~
~
#ref(差分ビューア.jpg)
差分ビューアの設定は標準では「TortoiseMerge」がセットされています。~
自分は差分ビューアに「WinMerge」を使っているので、それに設定してあります~
#ref(WinMarge.jpg)
-[[WinMerge 日本語版:http://www.geocities.co.jp/SiliconValley-SanJose/8165/winmerge.html]]~
テキストファイルの違いを表示する差分ビューア~

**使い続けてるとアイコンが変になるんですけど… [#of9c1450]
使っているうちに、チェックアイコンの表示がおかしくなる現象が起きます(Windows2000の場合は特に頻繁に起こります)~
これはアイコン表示をコロコロと変更するようなソフトの宿命で、修復をしてくれるソフトを入れておくと良いでしょう。~
私は以下のソフトを使っています。~
-[[KH Software Factory-KH DeskKeeper2007:http://www.khsoft.gr.jp/]]~
本来の使い方は、デスクトップアイコンの並びを記憶しておいて、誤って配置が崩れてしまったときに簡単に元の並び方に復元することができるソフトウェアです。~
初期設定で解像度が変わるたびにアイコン位置を保存&配置を修復してくれるため、例えばフルスクリーン表示するゲームの後でアイコンの配列が変わってしまうのを元に戻してくれます。~


**「Subversion」コマンドラインクライアントをインストール [#jd7774ee]
&color(blue){''通常使っている分には「TortoiseSVN」があればひとまず必要ない''};が、以下の場合は必要となる。~
~
&color(blue){''Subversionをコマンドラインで使いたい場合''};~
リポジトリのバックアップをしたい時に「svnadmin hotcopy」や「svnadmin dump」コマンドを使わないといけないが、これは「TortoiseSVN」では出来ない~
この場合はクライアントPCにインストールする。~
~
&color(blue){''リポジトリ(データ保管する場所)を別なPCにサーバーを立てて使う''};~
サーパーPCにインストールする…らしいです。~
こっちは私はやったこと無いので詳しい事はわかりません。~

以下のページで「Subversion」をダウンロード出来ます。
-[[subversion.tigris.org:http://subversion.tigris.org/]]~
「Subversion」が置いてあるページです~

ここのページの左上にある「Download」を押すと出てくるページでダウンロード出来ます。~
私は「&color(blue){''Win32 packages built against Apache 2.0''};」の...~
#ref(コマンドライン1.jpg)
~
「&color(blue){''svn-1.4.5-setup.exe''};」をダウンロードしています
#ref(コマンドライン2.jpg)

*ローカル環境での使い方 [#c51c46e6]
**最初にやる事 [#sa3d81e3]
***リポジトリを作成する(ここにリポジトリを作成) [#g3dc083d]
まずデータが格納される場所、「リポジトリ」というフォルダを作成しないといけません。~
&color(red){''この作業は新たなリポジトリを作成する時に1度しか行いません''};~
~
適当な名前のフォルダを作ります。~
例として「D:\repo」というフォルダを作成しました。~
~
「repo」フォルダを右クリック→[TortoiseSVN]→[ここにリポジトリを作成(Y)]~
~
そうすると以下のようなウインドウが開きます。
#ref(Repo_create.jpg)
[Native filesystem(FSFS)]→[OK]~
~
これでリポジトリが作成されます。~
以後はこのフォルダの内容を直接いじることはありません。~

***作業用フォルダの作成(SVN チェックアウト) [#bdb5e3cc]
次にSubversionで管理したいソースコードを置くためのフォルダを作成します。~
フォルダはリポジトリのフォルダと同じ名前でなくても構いません。~
ここでは例として「D:\proj」というフォルダを作成します。~
~
「proj」フォルダを右クリック→[SVN チェックアウト(T)]~
~
以下のようなウインドウが開きます~
#ref(チェックアウト.jpg)
リポジトリのURLに先ほど登録したリポジトリのフォルダを登録します。~
これはプルダウンメニューで選べるはずです。&color(blue){''表記的には「file:///D:/repo」という感じになります''};
最後に[OK]ボタンを押します。~
~
以下のようなウインドウが開きます。
#ref(チェックアウト終了.jpg)
~
フォルダに以下のようなマークが付き、フォルダ内には「.svn」というフォルダが作成されます。~
#ref(チェックアウトフォルダ.jpg)~
#ref(SvnFolder.jpg)~
これはこのフォルダがSubversionの管理下に置かれたことを意味します。~
今後はこのフォルダの下位にファイルやフォルダを置いて管理していく事になります。~

***あれ?なんでここでインポートしないの? [#ccf5aa2a]
ここの説明では、リポジトリの作成後すぐに作業用フォルダの作成(SVN チェックアウト)しています。~
Subversionの本や、別のWebページを見ている方は「あれ?リポジトリの作成の後でインポートをしてから作業用フォルダの作成(SVN チェックアウト)をするんじゃないの?」とお思いでしょう。~
この「インポート」と後に出る「追加」は意味が似ていてとても分かりずらいため、ここでは「インポート」をしなくても良い様に説明しています。~

**頻繁にやる事 [#ke2e186f]
***ファイルとフォルダを追加する(追加) [#kb1d291a]
先ほど作成した作業用フォルダ「D:\proj」内に登録したいファイルやフォルダをコピーします。~
自分で作ったソース以外にも、他からダウンロードしてきた使っているソースも一緒に置いておくと良いと思います。~
また、プロジェクトごと、あるいはライブラリごとにフォルダ分けする事をお勧めします。~
#ref(Folderdivision.jpg)~
~
コピーが終わりましたら登録したいフォルダ又はファイルを右クリック→[TortoiseSVN]→[追加(A)]を押します。
~
追加ウインドウが出ますので、追加したいファイルを選んで[OK]ボタンを押します。~
#ref(SvnAdd.jpg)
~
フォルダ又はファイルに追加マークが付きます。~
エクスプローラの[表示(V)]→[最新の情報に表示(R)]をして表示を更新しないとマークが付かない場合があります。~
#ref(FolderAdd.jpg)~
~
間違って追加したフォルダやファイルは、右クリック→[TortoiseSVN]→[元に戻す(V)]で解除する事が出来ます。~
~
この後は必ず&color(blue){''コミットをする必要''};があります。~
***ファイルとフォルダを削除する(削除) [#w4d244ce]
登録済みのファイルはSubversionの管理下に置かれます。~
そのため、普通に削除をしてもSubversionの管理上は削除になりません。~
普通に削除をしてもリポジトリには情報が残っていますので、管理下のフォルダに対して右クリック→[SVN 更新(U)]をすると削除したファイルが復活してしまいます。~
~
リポジトリ内の情報にもファイルの削除を知らせたい場合は~
削除したいファイル・フォルダを選択後、右クリック→[TortoiseSVN]→[削除(D)]を押します。~
削除ウインドウが出ますので、削除する対象が間違っていないか確認してから[OK]ボタンを押します。~
~
間違って削除してしまったフォルダは、右クリック→[TortoiseSVN]→[元に戻す(V)]で解除する事が出来ます。~
ファイルについては、削除をした直後にファイル自体が無くなってしまうので、上位フォルダに対して右クリック→[TortoiseSVN]→[元に戻す(V)]を行う事によって解除する事が出来ます。~
~
この後は必ず&color(blue){''コミットをする必要''};があります。~
コミット後は元に戻す事は出来ません。~
***ファイルとフォルダの名前の変更(名前を変更) [#c57c5174]
登録済みのファイルはSubversionの管理下に置かれます。~
そのため、普通に名前の変更をしてもSubversionの管理上は名前の変更をした事になりません。~
~
名前の変更をしたいファイル・フォルダを1つ選択後、右クリック→[TortoiseSVN]→[名前を変更(N)]を押します。

この後は必ず&color(blue){''コミットをする必要''};があります。~
***ファイルの内容を変更 [#qbda749e]
ファイルの内容を変更すると、Subversionは自動的に変更を検知し、赤いマークのついたアイコンが表示されます。~
#ref(EditIcon.jpg)~
記録したいタイミングで適度に&color(blue){''コミットをする必要''};があります。~

***ファイルとフォルダを記録する(SVN コミット) [#n16b1b97]
コミットをする前はあくまでもリポジトリに保管する予約をしてるに過ぎませんので、ファイルやフォルダに何らかの変更を加えた後は必ずコミットする必要があります。~
コミットをしたいファイル・フォルダを選択後、右クリック→[SVN 更新]を押します。~
ウインドウが表示されますのでコミット内容を確認後、メッセージにどんな変更をしたかのメモを書いてから[OK]ボタンを押します。~
#ref(SvnCommit.jpg)~

***ファイルとフォルダを取り出す(SVN 更新) [#v86a58aa]
ファイルを誤って削除してしまったので記録した内容から復元したい場合や、他の人が記録した内容を自分の作業フォルダに反映させたい場合に更新を行います。~
更新をしたいファイル・フォルダを選択後、右クリック→[SVN コミット]を押します。~

* Subversionのリポジトリ内の仮想フォルダと実際のフォルダの関係 [#i9512a30]
Subversionのリポジトリ内の仮想フォルダ構成は、普通に表示をしても見る事が出来ません。~
見るにはデスクトップを右クリック→[TortoiseSVN]→[リポジトリブラウザ]を押します。~
ウインドウが表示されますので、URLにポジトリのフォルダを登録します。~
これはプルダウンメニューで選べるはずです。&color(blue){''表記的には「file:///D:/repo」という感じになります''}; 最後に[OK]ボタンを押します。~
#ref(SVN仮想フォルダ構成.jpg)~
作業用フォルダ構成はこのような状態になります。~
このフォルダ構成では「D:\proj」が作業用フォルダのルートにしています。~
#ref(作業用フォルダ構成.jpg)~

*ローカル環境のリポジトリをレンタルサーバにお引越しメモ [#p7a2dac1]
**レンタルサーバーを探す [#kf776c78]
自分の家で作ったコードを会社でも見たい事があったので、リポジトリをインターネットからアクセスできる場所に置きたくなりました。~
Linuxの知識が乏しいのとメンテをするのが面倒なので、どこかのレンタルサーバー借りてSubversion入れて使おうかな…と思いながら情報収集していると以下のようなページが見つかりました。~
-[[さくらインターネットでSubversion (SaikyoLine.jp):http://saikyoline.jp/weblog/2005/10/subversion_2.html]]~
-[[suVeneのあれ:Subversionインストール(レンタルさくらサーバ):http://zeromemory.sblo.jp/article/1206848.html]]~
さくらインターネントのレンタルサーバで、Subversionをインストールする手順が書いてあります。~

さらに情報収集をしていると、最初からSubversionが標準で入っているレンタルサーバー「BLOCKGROUP - ブロックグループ」を見つけました。~
-[[BLOCKGROUP - ブロックグループ 格安・大容量・高機能のレンタルサーバ:http://www.blockgroup.jp/]]~
Subversionが標準で入っている事が特徴のレンタルサーバ、1ギガ月250円~

おお!最初からSubversionが入ってるのは楽だし、しかも安い!
欠点として「Telnet/SSHのご利用はできません」だそうですが、そこまでガシガシ使う気は無いので自分はこれを使う事に決定致しました。
**ローカルのリポジトリを「BLOCKGROUP」に移行…しかし失敗 &sad;[#a873e358]
サイト作成が主になっているように見えますが、Subversionのリポジトリとしてだけ使うという用途で使ってよいのかどうか問い合わせてみると「プログラムソースコードの共同管理レポジトリやデータ保管サーバとしてご利用頂くことに、何ら問題はございません。その際、共有レンタルサーバサービスという性質上、サーバ実行環境やその他設定の変更などは、必ずしも対応致しかねます」との事。~
さらにリポジトリの内容は公開したくない旨を聞いたところ「公開することを目的としない場合は、ドキュメントルート外にファイルを設置するという方法をお勧め致します」との事でした。~
ドキュメントルートはたぶんhtdocsのフォルダの事かな?~
~
リポジトリの引越しを行いたい場合には一度ダンプファイルを作成するらしいです。~
ただのコピーではダメらしい。~
-[[岩家ぶろぐ-[svn] ひとつのリポジトリを分割して複数のリポジトリを作成する:http://blog.iwa-ya.net/2007/06/02/011048]]~
リポジトリからダンプファイルを取り出す方法が書いてある~

うちの環境ではローカルのHDDの「D:\svn\proj」にリポジトリを作成しているため、コマンドプロンプトで以下のように入力しています。~
 svnadmin dump D:\svn\proj > d:\proj.dump
これでDドライブに無事「proj.dump」ファイルが出来上がりました。~
~
さて、このリポジトリをBLOCKGROUPのサーバにアップしますか…と思い~
 svnadmin load http://user????.srv???.bgrp.jp/svn/ < d:\proj.dump
というようなコマンドを打つも、&color(red){''httpに対してはダンプファイルを送れない''};旨のエラーメッセージが。~
そもそもsvnadminコマンドはhttpに対しては出来ないようで…うう、ここで「Telnet/SSHのご利用はできません」というのが支障になるとは~
リポジトリ移行は諦めて、新規に登録する事にしました。~

**「BLOCKGROUP」のリポジトリをバックアップする [#k08f2444]
svnadminコマンドはhttpに対しては出来ないのなら、バックアップはどうしよう?~
という事で、仕方なくFTPで接続して「repository」のフォルダをダウンロードする事にしました。~
~
本来のルールでは「Subversionを有効にしている状態でFTPは使ってはいけない」という事ですが、問い合わせてみると「SubversionとFTPの併用に関しましては、(FTPで)ファイルを編集しない(ダウンロードのみの利用)という前提の場合でしたら問題はございません。」という事でした。~

**レンタルサーバー「BLOCKGROUP」を応援してあげたいな [#oe2459cd]
 色々と制約のある「BLOCKGROUP」ですが、値段・対応の丁寧さ・FAQやマニュアルの充実など、かなり自分の中で好感度があります。~
 なのでここで応援してあげたいと思います。(注意:自分、BLOCKGROUPの社員じゃないですからね!)~
-メリット~
--対応がとても丁寧~
--Subversionが最初から入っている~
Subversionによるグループ管理が可能~
Webページを作らないで開発のためにSubversionだけ使う事も可能~
--インストール確認ソフトのマニュアルが置いてあり分かり易い~
--比較的安い~
-デメリット~
--Telnet/SSHが利用できない~
--SubversionとFTPの同時利用は出来ない~
ただしFTPで書き込まないで、読み込みだけだったら同時使用可能~