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 月 13

SVNのコピーを別サーバーへ作成するWindowsのタスクスケジュールを作成します。
「AAAサーバーにあるSVNリポジトリ(D:\svnroot)をBBBサーバーの共有ディレクトリにコピーする。」というタスクを作ります。AAAサーバー、BBBサーバーはいずれもWindowsXP Proです。

手順
1.BBBサーバーに共有フォルダ(Backup)を作成
2.AAAサーバーのAdministartorが\\BBB\BackupにアクセスできるようにBBBサーバーの権限を設定します。
 ※AAAサーバーのAdministartorのパスワードがない場合、うまくタスクを実行できないので、
  Administartorのパスワードは必ず作成する。
3.AAAサーバーで、SVNリポジトリのホットコピーを作成するbatファイルを作成する(D:\bat\svnrootbackup.bat)

echo %date:~0,4%%date:~5,2%%date:~8,2%
SET DIR=SVNROOT_%date:~0,4%%date:~5,2%%date:~8,2%
echo %DIR%
svnadmin hotcopy D:\svnroot \\BBB\Backup\%DIR%
‘pause;


4.AAAサーバーで、D:\bat\svnrootbackup.batを実行し、\\BBB\Backup配下にホットコピーが無事作成できることを確認する
5.AAAサーバーのコントロールパネルからタスクを実行する。
6.「スケジュールされたタスクの追加」を実行
7.「タスクウィザード」でとりあえず、電卓を選択(あとで修正)。

とりあえず電卓を選択し、後で修正する。

とりあえず電卓を選択し、後で修正する。

8.タスクの名前(ここではsvnbackup)と実行する間隔を設定する。

image090210134714

9.時間を設定する。
image090210134718

ここでは毎日するよう設定

10.Administratorのパスワードを設定する。

image090210134732

Administratorのパスワードを設定

11.完了を押して終了。
12.追加したタスクのプロパティを開く
13.プロパティ画面の「実行するファイル名」を下記のように修正し、OKボタンを押す。

C:\WINDOWS\system32\cmd.exe /c “D:\bat\svnrootbackup.bat”

プロパティ画面

プロパティ画面

おわり Q4f




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