戻る

SubversionをWindowsで使う

 Subversionを使った際のメモを書いていきます。



参考にした本

参考にしたページ


Subversionのインストール方法

「TortoiseSVN」をインストール

まず、クライアント側には「TortoiseSVN」と「Language packs」をダウンロードしてインストールします。

  • tortoisesvn.tigris.org
    「TortoiseSVN」と「Language packs」が置いてあるページです
    ここのページの左上にある「Download」を押します。

    #ref(): File not found: "TortoiseSVN_Download.jpg" at page "Subversion/Windowsで使う(TortoiseSVN)"

    出てくる以下のページでダウンロード出来ます。
    私は32bit版「TortoiseSVN」の「TortoiseSVN-1.4.8.12137-win32-svn-1.4.6.msi」をダウンロードしています。

    #ref(): File not found: "TortoiseSVN_DL.jpg" at page "Subversion/Windowsで使う(TortoiseSVN)"

    日本語化するための32bit版「Language packs Japanese 32bit Setup」の「LanguagePack-1.4.8.12137-win32-ja.exe

    #ref(): File not found: "Language packs_DL.jpg" at page "Subversion/Windowsで使う(TortoiseSVN)"

    をインストールしています。
    「TortoiseSVN」には「Subversion」も含まれていますので、ローカル環境で使う場合はこれだけでOKです。

    以上の2つをインストールして下さい。

TortoiseSVNに設定する

インストールが終わったら、デスクトップを右クリック→[TortoiseSVN]→[Settings]

以下のような設定ウインドウが開きます。

Language.jpg

Languageを「日本語」に直します。
ここで日本語に選択出来ない場合は前記の「LanguagePack」がインストールされていないのでインストールして下さい。
[適用(A)]→[OK]を押して設定を一度終了します

デスクトップを右クリック→[TortoiseSVN]→[設定(S)]

以下のような設定ウインドウが開きます(さっきの設定ウインドウの日本語化したもの)

Settings.jpg

「除外/無視するパターン(P)」でSubversionで無視する拡張子を指定します。
ここで気をつけなければいけない事は、大文字・小文字を区別してしまう事です。
通常は「*.bak *.Bak *.BAK」を指定しておけば良いでしょう。

差分ビューア.jpg

差分ビューアの設定は標準では「TortoiseMerge」がセットされています。
自分は差分ビューアに「WinMerge」を使っているので、それに設定してあります

#ref(): File not found: "WinMarge.jpg" at page "Subversion/Windowsで使う(TortoiseSVN)"

使い続けてるとアイコンが変になるんですけど…

使っているうちに、チェックアイコンの表示がおかしくなる現象が起きます(Windows2000の場合は特に頻繁に起こります)
これはアイコン表示をコロコロと変更するようなソフトの宿命で、修復をしてくれるソフトを入れておくと良いでしょう。
私は以下のソフトを使っています。

  • KH Software Factory-KH DeskKeeper2007
    本来の使い方は、デスクトップアイコンの並びを記憶しておいて、誤って配置が崩れてしまったときに簡単に元の並び方に復元することができるソフトウェアです。
    初期設定で解像度が変わるたびにアイコン位置を保存&配置を修復してくれるため、例えばフルスクリーン表示するゲームの後でアイコンの配列が変わってしまうのを元に戻してくれます。

「Subversion」コマンドラインクライアントをインストール

通常使っている分には「TortoiseSVN」があればひとまず必要ないが、以下の場合は必要となる。

Subversionをコマンドラインで使いたい場合
リポジトリのバックアップをしたい時に「svnadmin hotcopy」や「svnadmin dump」コマンドを使わないといけないが、これは「TortoiseSVN」では出来ない
この場合はクライアントPCにインストールする。

リポジトリ(データ保管する場所)を別なPCにサーバーを立てて使う
サーパーPCにインストールする…らしいです。
こっちは私はやったこと無いので詳しい事はわかりません。

以下のページで「Subversion」をダウンロード出来ます。

  • subversion.tigris.org
    「Subversion」が置いてあるページです
    ここのページの左上にある「Download」を押します。

    #ref(): File not found: "SVN_Download.jpg" at page "Subversion/Windowsで使う(TortoiseSVN)"

    出てくる以下のページでダウンロード出来ます。
    私は「Win32 packages built against Apache 2.0」の...

    #ref(): File not found: "コマンドライン1.jpg" at page "Subversion/Windowsで使う(TortoiseSVN)"


    svn-1.4.6-setup.exe」をダウンロードしています

    #ref(): File not found: "コマンドライン2.jpg" at page "Subversion/Windowsで使う(TortoiseSVN)"

ローカル環境での使い方

最初にやる事

リポジトリを作成する(ここにリポジトリを作成)

まずデータが格納される場所、「リポジトリ」というフォルダを作成しないといけません。
この作業は新たなリポジトリを作成する時に1度しか行いません

適当な名前のフォルダを作ります。
例として「D:\repo」というフォルダを作成しました。

「repo」フォルダを右クリック→[TortoiseSVN]→[ここにリポジトリを作成(Y)]

そうすると以下のようなウインドウが開きます。

Repo_create.jpg

[Native filesystem(FSFS)]→[OK]

これでリポジトリが作成されます。
以後はこのフォルダの内容を直接いじることはありません。

作業用フォルダの作成(SVN チェックアウト)

次にSubversionで管理したいソースコードを置くためのフォルダを作成します。
フォルダはリポジトリのフォルダと同じ名前でなくても構いません。
ここでは例として「D:\proj」というフォルダを作成します。

「proj」フォルダを右クリック→[SVN チェックアウト(T)]

以下のようなウインドウが開きます

チェックアウト.jpg

リポジトリのURLに先ほど登録したリポジトリのフォルダを登録します。
これはプルダウンメニューで選べるはずです。表記的には「file:///D:/repo」という感じになります 最後に[OK]ボタンを押します。

以下のようなウインドウが開きます。

チェックアウト終了.jpg


フォルダに以下のようなマークが付き、フォルダ内には「.svn」というフォルダが作成されます。

チェックアウトフォルダ.jpg
SvnFolder.jpg

これはこのフォルダがSubversionの管理下に置かれたことを意味します。
今後はこのフォルダの下位にファイルやフォルダを置いて管理していく事になります。

あれ?なんでここでインポートしないの?

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

頻繁にやる事

ファイルとフォルダを追加する(追加)

先ほど作成した作業用フォルダ「D:\proj」内に登録したいファイルやフォルダをコピーします。
自分で作ったソース以外にも、他からダウンロードしてきた使っているソースも一緒に置いておくと良いと思います。
また、プロジェクトごと、あるいはライブラリごとにフォルダ分けする事をお勧めします。

Folderdivision.jpg


コピーが終わりましたら登録したいフォルダ又はファイルを右クリック→[TortoiseSVN]→[追加(A)]を押します。
追加ウインドウが出ますので、追加したいファイルを選んで[OK]ボタンを押します。

SvnAdd.jpg


フォルダ又はファイルに追加マークが付きます。
エクスプローラの[表示(V)]→[最新の情報に表示(R)]をして表示を更新しないとマークが付かない場合があります。

FolderAdd.jpg


追加の後は必ずコミットをして、リポジトリ側に変更を登録する必要があります。

CommitIcon.jpg


間違って追加したフォルダやファイルはコミット前であれば[右クリック]→[TortoiseSVN]→[元に戻す(V)]で解除する事が出来ます。
ただし、この[元に戻す(V)]は不用意にフォルダ全体に対して行うと他の修正も全て元に戻してしまうので注意してください。
私はこれで変更中のコミットしていないファイルが元に戻って泣きました。
追加を実行する前に一度全体をコミットしておく癖をつけておくと、上記のような悲劇に見舞われずに済むとおもいます。

ファイルとフォルダを削除する(削除)

登録済みのファイルはSubversionの管理下のリポジトリに置かれます。
そのため、普通に削除をしてもSubversionの管理上は削除になりません。
普通に削除をしてもリポジトリには情報が残っていますので、管理下のフォルダに対して右クリック→[SVN 更新(U)]をすると削除したファイルが復活してしまいます。

リポジトリ内の情報にもファイルの削除を知らせたい場合は
削除したいファイル・フォルダを選択後、右クリック→[TortoiseSVN]→[削除(D)]を押します。
削除ウインドウが出ますので、削除する対象が間違っていないか確認してから[OK]ボタンを押します。

DeleteIcon.jpg

フォルダは上記のように×マークが付きますが、ファイルについては削除をした直後にファイル自体が見えなくなります。

追加の後は必ずコミットをして、リポジトリ側に変更を登録する必要があります。

間違って削除してしまったフォルダはコミット前であれば[右クリック]→[TortoiseSVN]→[元に戻す(V)]で解除する事が出来ます。
ファイルについては、削除をした直後にファイル自体が無くなってしまうので、上位フォルダに対して右クリック→[TortoiseSVN]→[元に戻す(V)]を行う事によって解除する事が出来ます。
ただし、この[元に戻す(V)]は不用意にフォルダ全体に対して行うと他の修正も全て元に戻してしまうので注意してください。
私はこれで変更中のコミットしていないファイルが元に戻って泣きました。
削除を実行する前に一度全体をコミットしておく癖をつけておくと、上記のような悲劇に見舞われずに済むとおもいます。

ファイルとフォルダの名前の変更(名前を変更)

登録済みのファイルはSubversionの管理下に置かれます。
そのため、普通に名前の変更をしてもSubversionの管理上は名前の変更をした事になりません。

名前の変更をしたいファイル・フォルダを1つ選択後、右クリック→[TortoiseSVN]→[名前を変更(N)]を押します。

名前の変更.jpg

出てくるウインドウに変更したい名前を入力して[OK]ボタンを押します。

RenameIcon.jpg

フォルダの場合はこのように古いフォルダ名に削除マークと、新しいフォルダ名に追加マークが見えます。
ファイルの場合はただ単純に変更後のファイル名に追加マークが付きます。
こういう見てくれでも、ただ単純に削除・追加をしたわけではなくちゃんと内部ではリネームしたという情報で記録されますのでご安心を。


この後は必ずコミットをする必要があります。

ファイルの内容を変更

ファイルの内容を変更すると、Subversionは自動的に変更を検知し、赤いマークのついたアイコンが表示されます。

EditIcon.jpg

記録したいタイミングで適度にコミットをする必要があります。

CommitIcon.jpg

ファイルとフォルダを記録する(SVN コミット)

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

SvnCommit.jpg

ファイルとフォルダを取り出す(SVN 更新)

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

「.svn」フォルダを抜いた状態でファイル・フォルダをコピーする(エクスポート)

CVSの管理下におかれたフォルダには必ず「.svn」という管理情報が入っているフォルダが作成されます。
ソースコード公開等で管理下のファイル・フォルダをコピーする際に、この管理フォルダが逆に邪魔になる事でしょう。
コピー後に手で一つ一つ消すのでも良いのですが、コピーしたいファイル・フォルダを選択後、右クリック→[TortoiseSVN]→[エクスポート]を押すと、管理情報のない状態でコピーを行う事が出来ます。

Subversionのリポジトリ内の仮想フォルダと実際のフォルダの関係

Subversionのリポジトリ内の仮想フォルダ構成は、普通に表示をしても見る事が出来ません。
見るにはデスクトップを右クリック→[TortoiseSVN]→[リポジトリブラウザ]を押します。
ウインドウが表示されますので、URLにポジトリのフォルダを登録します。
これはプルダウンメニューで選べるはずです。表記的には「file:///D:/repo」という感じになります 最後に[OK]ボタンを押します。

SVN仮想フォルダ構成.jpg

作業用フォルダ構成はこのような状態になります。
このフォルダ構成では「D:\proj」が作業用フォルダのルートにしています。

#ref(): File not found: "作業用フォルダ構成.jpg" at page "Subversion/Windowsで使う(TortoiseSVN)"

リポジトリからリポジトリへの移行

作成中です
projからproj2に内容を移す場合のコマンド

svnadmin dump D:\svn\proj > d:\proj.dump
svnadmin load D:\svn\proj2 < d:\proj.dump

※これやんなくても、リポジトリフォルダのコピーだけで行ける気がする

ローカル環境のリポジトリをレンタルサーバにお引越しメモ

レンタルサーバーを探す

自分の家で作ったコードを会社でも見たい事があったので、リポジトリをインターネットからアクセスできる場所に置きたくなりました。
Linuxの知識が乏しいのとメンテをするのが面倒なので、どこかのレンタルサーバー借りてSubversion入れて使おうかな…と思いながら情報収集していると以下のようなページが見つかりました。

さらに情報収集をしていると、最初からSubversionが標準で入っているレンタルサーバー「BLOCKGROUP - ブロックグループ」を見つけました。
ラクなのでこれ使っていたのですが、最近潰れてしまった模様…しかも夜逃げ同然なスピード閉鎖…あ~ぁ [worried]

次の移転先サーバーはどうしようかな~?と思っていたら、会社の同僚にCORESERVERというサーバを教えてもらいました。
CGIもある程度揃っていて、容量も15ギガで良さげです。
これの前身?のXREAというサーバーもやってるらしいので、実績もまずますです。

とりあえず、サーバはここに決定、しかし最初からSubversionが入っているのは良いが、バージョンが古いためBLOCKGROUPから移植してきたリポジトリが使えない!
ということで、安定バージョンの中で新しいバージョン(1.4.6)をインストールして使うことにしました。

レンタルサーバー「BLOCKGROUP」が潰れちゃった!

あららー、BLOCKGROUPが潰れてしまった模様。

「BLOCKGROUP」のリポジトリフォルダをバックアップする

FTPで接続して「repository」のフォルダをダウンロードしてください。

「BLOCKGROUP」のワーキングコピーをバックアップする

ホームページ等を作成されている場合、そこで増えたデータに関してはSubversionの管轄外です。
完全なバックアップを取るには、FTPで接続して「public_html」のフォルダをダウンロードします。

CORESERVERにSubversion安定版の新バージョン(1.4.6)をインストールする

以下の説明の元ソースです。
Linux初心者には、こういう解説はものすご~くありがたいです。
以下のWebページの作者に感謝 [smile]

  1. 作業用に「tmp」フォルダを作成
    mkdir ~/tmp
  2. 「Oracle Berkeley DB」のファイルをダウンロード
    「Oracle Berkeley DB」のページから最新バージョンのBerkeley DB 4.7.25.tar.gz(db-4.7.25.tar.gz)をダウンロードして「tmp」フォルダに突っ込む
  3. 「Oracle Berkeley DB」をインストールする
    以下のコマンドを打ち込めばインストール出来ます。
    cd ~/tmp
    tar xvzf db-4.7.25.tar.gz
    cd db-4.3.29/build_unix/
    ../dist/configure --prefix=$HOME/packages --enable-compat185
    make
    make install
    ※「make」もしくは「make install」時にkillされたりエラーが出たりして止まってしまった場合はもう一度行う。
  4. 「Subversion」のファイル2つをダウンロード
    のページからバージョン1.4.6ファイルを2つダウンロードする
    トップページから辿るとファイルのありかが分からなかったため、直指定でURLを叩く
    http://subversion.tigris.org/downloads/subversion-1.4.6.tar.gz
    http://subversion.tigris.org/downloads/subversion-deps-1.4.6.tar.gz
    この2つのファイル(subversion-1.4.6.tar.gz と subversion-deps-1.4.6.tar.gz)を「tmp」フォルダに突っ込む
  5. 「Subversion」をインストールする
    以下のコマンドを打ち込めばインストール出来ます。
    cd ~/tmp
    tar xvzf subversion-1.4.6.tar.gz
    tar xvzf subversion-deps-1.4.6.tar.gz
    cd subversion-1.4.6
     ./configure --prefix=$HOME/packages --with-ssl --with-berkeley-db=$HOME/packages
    make
    make install 
    ※「make」もしくは「make install」時にkillされたりエラーが出たりして止まってしまった場合はもう一度行う。
  6. カレントフォルダに「.bashrc」ファイルを作成する
    「.bashrc」という名前(ファイル名はとても重要なので間違えないようにしてください)のテキストファイルを作り、ファイルの内容を以下のようにする
    export PATH=/virtual/ユーザー名/local/bin:$PATH
    ※当然、ユーザー名の所は自分のユーザー名を入れてね
  7. 「.bashrc」ファイルを認識させるためにコマンドを打つ
    source .bashrc
  8. ログインし直して、以下の3つのコマンドとも、バージョンが1.4.6と出れば成功です。
    1. 「svn」コマンドのバージョン
      svn --version

      svn, version 1.4.6 (r28521)
         compiled Jun 25 2008, 23:49:05
      
      Copyright (C) 2000-2007 CollabNet.
      Subversion is open source software, see http://subversion.tigris.org/
      This product includes software developed by CollabNet (http://www.Collab.Net/).
      
      The following repository access (RA) modules are available:
      
      * ra_dav : Module for accessing a repository via WebDAV (DeltaV) protocol.
        - handles 'http' scheme
        - handles 'https' scheme
      * ra_svn : Module for accessing a repository using the svn network protocol.
        - handles 'svn' scheme
      * ra_local : Module for accessing a repository on local disk.
        - handles 'file' scheme
      
    2. 「svnadmin」コマンドのバージョン
      svnadmin --version

      svnadmin, version 1.4.6 (r28521)
         compiled Jun 25 2008, 23:49:05
      
      Copyright (C) 2000-2007 CollabNet.
      Subversion is open source software, see http://subversion.tigris.org/
      This product includes software developed by CollabNet (http://www.Collab.Net/).
      
      The following repository back-end (FS) modules are available:
      
      * fs_base : Module for working with a Berkeley DB repository.
      * fs_fs : Module for working with a plain file (FSFS) repository.
      
    3. 「svnserve」コマンドのバージョン
      svnserve --version

      svnserve, version 1.4.6 (r28521)
         compiled Jun 25 2008, 23:49:05
      
      Copyright (C) 2000-2007 CollabNet.
      Subversion is open source software, see http://subversion.tigris.org/
      This product includes software developed by CollabNet (http://www.Collab.Net/).
      
      The following repository back-end (FS) modules are available:
      
      * fs_base : Module for working with a Berkeley DB repository.
      * fs_fs : Module for working with a plain file (FSFS) repository.

BLOCKGROUPからCORESERVERにリポジトリを移行

間違いあり!修正中
先にSubversion安定版の新バージョン(1.4.6)をインストールしておく事
BLOCKGROUPにあった「repository」フォルダを置くだけです。

例えば、カレントに「repository」フォルダを置いた場合は、アクセスするURLは

svn+ssh://http指定のサーバー名/virtual/ユーザー名/repository

puttyで接続する場合は

svn+ssh://ユーザー名@puttyセッション名/virtual/ユーザー名/repository

となります。
※ユーザー名はあなたのユーザー名を使います。
※アクセス時にパスワードを聞かれます。