目次
Perforce
Perforce とは
Git, Mercurial, SVN のようにファイルのバージョン管理を行うためのソフトウエアです。 Git, Mercurial といった分散型とは異なり、中央サーバーが必要な集中型1)となっています。 集中型なので、排他的ロックが可能でバイナリデータの扱いに向いています。 また非常に高速であり、UE4 のような巨大なエンジンや、膨大な PC/コンソールゲームのリソースなどをまとめて管理する用途に向いています。 UE4 では標準で Perforce をサポートしており、ゲーム開発でも Perforce と組み合わせて用いられるケースが増えています。
Perforce を利用するにはライセンスの購入が必要です。 ただし 5 user までは無料で利用できるので、個人などの小規模な場合はコストが掛かりません。
Server を起動する
Server OS について
- ファイル名の扱い
- Windows 上でサーバーを起動した場合、デフォルトでファイル名の大文字小文字の区別がありません。また Workspace 名も大文字区別を区別しません。
- Linux でサーバーを立てた場合、デフォルトでファイル名や Workspace 名の大文字小文字の区別があります。
- データベースファイル互換性
- Perforce のデータベースファイルをそのまま異なる OS 上に持っていくことができません。
- 同じ OS 上であれば別の PC にそのままコピーして移動させることができます。
Windows の場合
Windows PC をサーバーにする場合の手順です。一人で使う場合は作業 PC にそのまま入れてください。
- helix-versioning-engine-x64.exe を実行
- Port Number はそのまま 「 1666 」
- Server も最初は「 1666 」のまま
- インストールが終わったら、以下 Command プロンプト (cmd.exe や powershell.exe) から作業します
すでに起動しているサーバーを一旦停止します。
p4 admin stop
データベースと ssl の設定を行います。管理者権限でなくても構いません。先に P4ROOT , P4SSLDIR のフォルダを作っておいてください。
p4 set -s P4ROOT=C:\Perforce\root p4 set -s P4SSLDIR=C:\Perforce\ssl p4 set -s P4CHARSET=utf8 p4 set -s P4PORT=ssl:localhsot:1666 p4d -xi p4d -Gc
データベースの場所や文字コードなど、各種設定を行います。 これはサーバー(Service)側の設定になります。 管理者権限が有効な Console (cmd.exe や PowerShell) で実行してください。( -S オプションの大文字、小文字の違いに注意してください)
p4 set -S perforce P4PORT=ssl:1666 p4 set -S perforce P4ROOT=C:\Perforce\root p4 set -S perforce P4SSLDIR=C:\Perforce\ssl p4 set -S perforce P4CHARSET=utf8
ipv6 対応が必要な場合は P4PORT を以下のように変更します。(https://www.toyo.co.jp/files/user/img/product/ss/help/perforce/r15.1/manuals/p4sag/chapter.install.html)
p4 set -S perforce P4PORT=ssl64:[::]:1666
サーバーを起動します。これも管理者権限が必要です。
svcinst start -n perforce
ユーザーを追加します。ここから先は管理者権限でなくても構いません。
p4 trust のあとに yes を入力します。
p4 trust
任意のユーザーを追加します。エディタ (メモ帳) が立ち上がるのでそのまま閉じます。(必要ならメールアドレスの修正)
p4 user <ユーザー名>
下記のコマンドで、ユーザーが追加されているかどうか確認できます。
p4 users
アクセス権限を有効化します。 下記のコマンドを実行するとエディタ (メモ帳) が開くので、下の方で自分のユーザーが “super” になっていることを確認してください。 問題なければ何もせずに閉じます。
p4 protect
これで終わりです。 あとは P4V などの client から Perforce Server を利用することができます。
また P4Admin を使うとサーバーの管理も GUI 上で行うことができます。
Linux の場合
Windows よりも高速なので、可能なら Linux をサーバーにした方が良いようです。
- p4d と p4 command を download しておいてください
下記手順ではとりあえず一般ユーザー権限でサーバーを起動しています。
サーバー起動
$ mkdir $HOME/perforce $ mkdir $HOME/perforce/root $ mkdir $HOME/perforce/ssl $ chmod 700 $HOME/perforce/ssl $ export P4ROOT=$HOME/perforce/root $ export P4SSLDIR=$HOME/perforce/ssl $ export P4PORT=ssl:1666 $ export P4CHARSET=utf8 $ cd $HOME/perforce/root $ p4d -xi $ p4d -Gc $ p4d
ユーザー作成など
$ export P4PORT=ssl:localhost:1666 $ export P4CHARSET=utf8 $ p4 trust $ p4 user admin $ p4 users $ p4 protect
あとは P4Admin を使って gui 上で設定可能です。
P4V を使う
- P4V の install
- p4vinst64.exe を実行します
- Server には 「 ssl:<サーバー名>:1666 」を入れます。同じ PC でサーバーを起動した場合は「 ssl:localhost:1666 」になります。
- 初回起動時
- start menu から P4V を起動します
- “Open Connection” 画面では Perforce の User 名を入力します。
- Workspace 列の右側にある [ New ] をクリックします。
- もし “Perforce Fingerprint Required” ダイアログが出たら Trust this fingerprint にチェックを入れて [Connect]
- “Workspace: New” のダイアログが表示されるので下記のように入力して [OK] をクリック
- Workspace name: <任意>
- Workspace root: <任意の作業フォルダのパス>
- “Open Connection” 画面に戻るので、そのまま [OK]
- “Choose Character Encoding” が出たら「UTF-8」
Perforce 証明書の更新
サーバーの ssl 証明書は 1~2 年ほどで切れるため定期的に更新する必要があります。
UE4/UE5 向けの設定
Typemap
UE4 のアセットを扱う場合は typemap の設定が必要です。
p4 typemap
テキストエディタ (メモ帳) が開くので、下記のページにある TypeMap の一覧をコピペします。
上記以外にも、排他ロックが必要な binary file は “binary+l” で追加しておいてください。
UE5 からは .~.json と .so への “+w” が必要なので注意。
TypeMap: binary+w //....exe binary+w //....dll binary+w //....lib binary+w //....app binary+w //....dylib binary+w //....stub binary+w //....ipa binary+w //....pdb binary+w //....obj binary+w //....a binary+w //....response binary+w //....o binary+w //....bin binary+w //....so text+w //....target text+w //....modules text+w //....version text+w //....generated.h text+w //....xml text+w //....log text+w //....exe.config text+w //....tps text+w //....csproj text+w //....csproj.References text+w //....dev.json text+w //....deps.json text+w //....runtimeconfig.json text+w //....tlh text+w //....tli ~
P4IGNORE
Git/Mercurial と違い、除外指定ファイルはフォルダに置いておくだけでは機能しません。 予めコマンドで設定しておく必要があります。 またプロジェクトではなくユーザー単位の判定になるので、使用する方が各自設定を行ってください。
p4 set P4IGNORE=<除外設定ファイルのパス>
例
p4 set P4IGNORE=D:\Workspace\UE\.p4ignore.txt
除外指定は Git/Mercurial ほど柔軟ではなくかなり制限があります。
git のようなより厳密な除外判定を行いたい場合は、p4 add するための外部ツールを用意した方が良いでしょう。
CHARSET と P4V を使用する場合の注意点
コマンドラインから設定する P4CHARSET は、“utf8” を設定すると BOM 無しになります。BOM を使用する場合は “utf8-bom” を設定します。
P4V で設定する CHARSET の “utf-8” はコマンドラインの設定と逆になるので注意してください。デフォルトの “Unicode (UTF-8)” は BOM 付きです。BOM 無しにするには、“Unicode (UTF-8, no BOM)” を選択する必要があります。
P4 Command Line | P4V | |
---|---|---|
UTF-8 BOM 無し | utf8 | Unicode (UTF-8, no BOM) |
UTF-8 BOM あり | utf8-bom | Unicode (UTF-8) |
- P4V の場合はメニューの Connection → “Choose Character Encoding…” で設定できます。
- P4CHARSET に設定できる値
Perforce の改行コード変換
Perforce ではファイルタイプが text の場合改行コード変換が行われます。
ファイルタイプ判定が間違っているとバイナリファイルでも CR (0x0d) が挿入されてしまうので注意してください。 そのため typemap の設定は重要になります。
例えば utf16 のファイルが unicode ではなく text で登録されてしまうと 「00 0D 00 0A」 → 「00 0D 00 0D 0A」と余計なバイト文字が挿入さ文字化けします。