2015年7月31日金曜日

バージョン管理システムPerforceサーバーをWindowsにインストールする

これまでUE4のプロジェクトでは、バージョン管理システムを使っていませんでした。そろそろ何とかしたいと思い、情報を集めていたところ、Perforceというバージョン管理システムを知りました。自分はGitに多少慣れているので、UE4でもGitでバージョン管理を望んでいました。しかし、巨大なバイナリファイルを扱う場合や、リポジトリが巨大になる場合には、Gitでの運用はベストではないかもしれないと思いはじめました。そこでPerforceが巨大なバイナリファイルでも高速に管理できることを聞きかじり、試してみることにしました。


UE4ではPerforceはSVNと並んで、デフォルトで使えるようになっているようです。公式ドキュメントでも、Perforceをバージョン管理に使用するドキュメントがあります。

いざ、PerforceサーバーをWindows 8.1で運用しようと思ったら、意外とややこしくて何回か挫折した後に、やっと使えるようになりました。PerforceはUnix系、Mac、Windowsと色々対応していますが、OS XやUnix系のOSにインストールする分には、そんなに悩まされることは無かったのではと思いました。

ダウンロード

まずはPerforceサーバーとクライアントをダウンロードしておきます。
以下のページから、Helix Versioning Engine (P4D)と、P4V: Visual Clientをダウンロードしておけば、だいたい全てのツールが揃うと思います。

Server vs Service

まず、Windows版だけに限りサーバーにServerバージョン(p4d.exe)とServiceバージョン(p4s.exe)があるのが、ややこしいです。中身は同じなのですが、起動方法が違います。Server版はコマンドプロンプトから起動できますが、Service版はその名の通り、WindowsのServiceから起動します。

僕も詳しくないので、間違いがあったら指摘していただきたいのですが、Serviceというのはプログラムを自動実行するシステムです。似たようなものにタスクスケジューラがありますが、Serviceの方は、ユーザーがログインする前に実行されるという特徴があります。

Windows 8.1にPerforceサーバーをServiceとしてインストール

実は、Windows 8.1に現在最新のPerforceサーバー(2015.1)をインストールすると、Service版のPerforceサーバーがデフォルトでWindows Serviceに登録されます。(ああ、ややこしい)
これをこのまま使用しますと、p4s.exeのあるディレクトリがそのままリポジトリのルートディレクトリになるので、必然的にC:\Program Files\Perforce\Server\ がリポジトリのルートディレクトリになってしまいます。

これは後々問題になりそうな気がするし、宗教的にも嫌なので、このデフォルトで入れられてしまったServiceを停止して、さらに今後起動しないように無効化します。
Serviceはコントロールパネル > システムとセキュリティ > 管理ツール > サービスから見ることができます。サービスのリストの中にPerforceという名前のサービスが登録されているので、そのプロパティを開き、停止&無効化します。(下図)
stop_perforce.jpg

次にリポジトリを入れるディレクトリを作ります。
僕は C:\MyPerforce\というベタなディレクトリにしました。ユーザーディレクトリ直下に作らなかったのは、複数のユーザーがこのリポジトリにアクセスする時に問題が出そうな気がしたからです。(執筆時点では、まだPerforceの使い方をよく理解していません。想像の部分が多いのでご注意ください)

次に、C:\Program Files\Perforce\Server\にインストールされているp4d.exeとp4s.exeをC:\MyPerforce\にコピーします。

次に管理者権限でコマンドプロンプトを起動します。
左下の窓アイコンを右クリックし、メニューからコマンドプロンプト(管理者)を選びます。こちらは自分のユーザーアカウントがAdministratorも兼ねていないと選べないかもしれません。(Windowsのこと詳しくないので…)
cmd.jpg

コマンドプロンプト(管理者)を起動したら、C:\MyPerforce\をカレントディレクトリにします。そして以下のコマンドを実行し、Serviceを作成します。
svcinst create -n MyPerforce -e c:\MyPerforce\p4s.exe -a
コマンドの要約をすると、MyPerforceという名前で新しくサービスを作成し、起動するプログラムはC:\MyPerforce\p4s.exeで、自動起動するようにしています。
svcinst.exeはPerforce用のサービス管理ツールです。svcinst -hで簡単なヘルプが出ます。
ちなみに管理者権限でコマンドプロンプトを起動していないと「OpenSCManager failed - アクセスが拒否されました。」とエラーが出ます。Windowsに慣れてないとはまるポイントです。

Serviceを作成し終わったら、次はそのServiceのサーバーパラメーターを設定します。コマンドプロンプトから、以下のようにパラメーターを設定します。
p4 set -S MyPerforce P4ROOT=C:\MyPerforce
p4 set -S MyPerforce P4PORT=1666
p4 set -S MyPerforce P4LOG=log
p4 set -S MyPerforce P4JOURNAL=journal
P4ROOTはリポジトリのルートディレクトリで、P4PORTはPerforceサーバーに接続するポートNOです。P4LOGとP4JOURNALはログファイル名とJournalファイル名ですが、Journalが何なのか、今のところよく分かっていません。

ここで一旦、Windowsを再起動し、Serviceの登録がうまく行ったか確認します。

再起動後、コマンドプロンプト(管理者)を再び起動します。
そこで以下のコマンドを入力し、Perforceサーバーが起動しているか確認します。
p4 info
サーバーが起動していれば、下図のような結果が現れると思います。特にServer rootとServer addressのポートNOが正しくなっているか確認しましょう。
p4_info.jpg

続いて、PerforceサーバーをUnicode-modeにします。これをしておかないとクライアントによっては、リポジトリにコミットしたコメント文の日本語が文字化けするそうです。
コマンドプロンプトのカレントディレクトリをC:\MyPerforceにして、以下のコマンドを実行します。
p4d -xi
Service版(p4s.exe)でサーバーを起動していても、Unicode-modeに変更するコマンドはp4d.exeでやるようですので、ご注意を。

ここまでで、PerforceサーバーをWindows Serviceで起動する方法の説明は終わりです。
もっと詳しく知りたい方は公式ドキュメントのPerforce Server Administrator's Guideをご覧になることをお薦めします。特にその中のPerforce and Windowsの項がとてもわかり易いです。

併せてp4.exeコマンドのユーザーガイドとコマンドリファレンスのリンクの載せておきます。必要になったらお読みください。

p4adminでユーザー作成

続いて、Perforceサーバーに接続するユーザーを作成します。
サーバーと一緒にインストールされているはずのp4admin.exeをエクスプローラーからダブルクリックして起動します。
最初の起動だと、Connectionウィンドウが表示されると思います。Server欄にサーバーのポートNOを入力し、User欄のNEWボタンを押して新規ユーザーを作成します。

作成に成功すると、ウィンドウのHomeタブにServer Infoが表示されると思います。
そこのUnicode supportがenableになっているかチェックしてください。(下図)
p4admin.jpg

ユーザーを作成すると、Perforceクライアント(p4v.exe、p4.exe)でサーバーに接続することができます。

今回はここまでです。
次回は、PerforceサーバーのTypeMapを設定します。

関連記事

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...