8 月 12

PCが壊れました P22
幸いHDDは無事たったので、新しいPCにSVNリポジトリを移動します。

動作環境
Windows XP Pro
Subversion 1.3

旧環境から取得したSVNリポジトリ
D:\svnroot.bk

新しく作成するSVNリポジトリ
D:\svnroot

移動方法
1.SVNをインストールする(Svn1ClickSetup-1.3.3.exe)。
  以前、使っていたものを使用します。
  1.3から1.4の互換性はあるようですが念のため。

2.旧SVNリポジトリのダンプファイルを作成(コマンドプロンプト)

c: > d:
d: > svnadmin dump d:\svnroot.bk > export.dump


3.新SVNリポジトリを作成(コマンドプロンプト)

d: > mkdir svnroot
d: > svnadmin create --fs-type=fsfs svnroot

※TortoiseSVNで「ここにレポジトリを作成」からレポジトリを作成すると、dumpファイルのloadが失敗することがあります。

4.新SVNリポジトリへダンプファイルをロード(コマンドプロンプト)

d: > svnadmin load svnroot < export.dump


5.Windowsサービスへ登録する1(SVNService.exeダウンロード)
Subversionのバージョンが1.3以下の場合、svnserve.exeに–serviceオプションがありません。1.3以下の場合はSVNService.exeを使ってサービス登録します。
(注意)
バージョン1.3以下のsvnserve.exeを使ってサービス登録しようと試みると、
サービスの登録には成功しますが、サービスを開始すると下記のようなエラーが出ます。

StartService FAILED 1053:

sc create svnserve binpath= “\”c:\Program Files\Subversion\bin\svnserve.exe\” –service –root d:\.svnroot” Displayname= “Subversion” depend= tcpip start= auto
–serviceオプションをサポートしていないために発生するエラーです。
この場合は、Subversionのバージョンを「Subversion Documentation」で確かめてみましょう。
1.3以下であれば、SVNService.exeを使ってインストールして下さい。

このサイトにSVNService.zipの直リンクがあります。
http://www32.atwiki.jp/lmes2/pages/162.html
SVNService.zipを解凍し、SVNService.exeを下記インストールディレクトリに入れる

C:\Program Files\Subversion\bin


(注意)リポジトリを移動させてもsvnserveの設定は引き継がれないため、svnroot\conf配下の情報は手動で更新しましょう。
svnserve.confを更新していない場合svnプロトコルのcommitで失敗したりします。

6.Windowsサービスへ登録する2(コマンドプロンプト)

SVNService -install -d -r d:\svnroot

成功するとWindowsサービスには、SVNServiceという名前でサービスが登録されています。
SVNServiceを開始してサービス登録完了です。
TortoiseSVNなどのクライアントでレポジトリにアクセスできたらレポジトリ移動作業は終了です。

7. 旧レポジトリからチェックアウトした作業中のプロジェクトフォルダを、新レポジトリにシンクロさせる。
それようのコマンドがあるのかもしれませんが、確実さを求めると次の方法がよいと思います。
(1)旧レポジトリからチェックアウトしたプロジェクトフォルダ内の.svnフォルダを再帰的に削除する。
  コマンドプロンプトで、プロジェクトフォルダの中まで移動し、下記コマンドを実行
  (念のため実行前にバックアップはとりましょう)

  for /f "tokens=*" %d in ('"dir /b/s/a | findstr /r \.svn$"') do rmdir /q/s "%d"

(上記コマンドは下記のURLを参考にしました)
http://dara-j.asablo.jp/blog/2008/08/04/3671839
(2)対象のプロジェクトを新レポジトリからチェックアウトする。
(3)(1)で.svnフォルダを削除したフォルダを、(2)に上書きする。

以上です Q49




2 月 10

SVNのコミットログの変更許可はユーザー毎に付与できるようです。

  1. SVNROOT/hooks配下にpre-revprop-change.batを作成
  2. pre-revprop-change.batを下記の通りに編集

if “%4″==”svn:log” (
    if “%3″==”(許可するユーザー名)” (
        exit 0
    )
)
exit 1




2 月 10

容量不足などでSVNリポジトリを変更する場合、次のようにします。
作業環境:WindowsXP Pro

  • [既存のリポジトリパス]C:\svnroot
  • [移行先のリポジトリパス]D:\svnroot

> svadmin hotcopy C:\svnroot D:\svnroot
> SvnService -remove C:\svnroot
> SvnService -install -d -r d:\svnroot –listen-port 3690

その後、サービスからSVNServiceを開始する。