Perforceのファイルタイプ
Perforceでは一連のファイルタイプがサポートされており、ファイルタイプに従ってPerforceサービスによるファイルの保存方法やファイル比較の可否が決定されます。ファイルを追加するとき、Perforceは自動的にファイルタイプを識別しようとします。最初にPerforceは、ファイルが通常のファイルかシンボリックファイルかを識別し、次にファイルの最初の部分を調べてそれがtext
かbinary
かを判断します。非テキストキャラクタが見つかれば、そのファイルはbinary
と見なされ、見つからない場合はtext
と見なされます。(Unicode環境ではファイルの検出方式が異なります。「Perforceのファイルタイプ検出とUnicode」を参照してください。)
Perforceが制御しているファイルのタイプを識別するには、p4 openedまたはp4 filesコマンドを発行します。Perforceファイルタイプを変更するには、-t
オプションを指定します。ファイルタイプの変更について詳しくは、『P4コマンドリファレンス』のp4
add、p4 edit、およびp4 reopenの各項の説明を参照してください。
filetype
Perforceのファイルタイプ
Perforceは以下のファイルタイプをサポートします。
キーワード |
解説 |
コメント |
記憶タイプ |
---|---|---|---|
|
Macファイル |
Macデータフォーク、リソースフォーク、ファイルタイプおよびファイルクリエーターのAppleSingleの記憶。 詳細については、Macクライアントリリースノートを参照。 |
フルファイル、圧縮、AppleSingleフォーマット |
|
非テキストファイル |
ワークスペースにバイナリファイルとして同期されます。ディポ内に圧縮された状態で記憶されます。 |
フルファイル、圧縮 |
|
Macリソースフォーク |
(旧式)このタイプは後方互換性を保つためにサポートされていますが、 |
フルファイル、圧縮 |
|
シンボリックリンク |
UNIX、OS Xまたは最近のバージョンのWindows環境にあるPerforceアプリケーションでは、これらのファイルはシンボリックリンクとして扱われます。その他のプラットフォームでは、これらのファイルは(小さい)テキストファイルと同様に示されます。 |
デルタ |
|
テキストファイル |
ワークスペースにテキストとして同期されます。行末変換が自動的に実行されます。 |
デルタ |
|
Unicodeファイル |
UnicodeモードのPerforceサービスは
Unicodeモードで稼働していないPerforceサービスでは、 詳細については、『Perforce国際語モードに関する注意事項』を参照してください。 |
デルタ、UTF-8 |
|
Unicodeファイル |
サービスがUnicodeモードで動作しているか否かにかかわらず、ファイルはUTF-8で転送され、クライアントワークスペースでUTF-16(BOM付き、ユーザのマシンに適切なバイトオーダー)にコード変換されます。 詳細については、『Perforce国際語モードに関する注意事項』を参照してください。 |
デルタ、UTF-8 |
ファイルタイプ修飾子
特定のファイルのベースタイプにファイルタイプ修飾子を適用することにより、タイプスタンプの保存、RCSキーワードの拡張、サービス上でのファイルの保存方法の指定などができます。修飾子のファイルタイプへの適用に関して詳しくは、「Perforceでのファイルの保存形式を指定する」をご覧ください。
以下の表に、ファイルタイプ修飾子を示します。
修飾子 |
解説 |
コメント |
---|---|---|
|
Perforceが各ファイルリビジョンのフル圧縮バージョンを記憶する |
|
|
PerforceがデルタをRCSフォーマットで記憶する |
|
|
Perforceがリビジョンごとにフルファイルを記憶する |
デルタの記憶が無意味または非効率的であるような、テキストとして処理されない長いASCIIファイル(PostScriptファイルなど)に使用します。 |
|
RCS(リビジョン制御システム)キーワード拡張 |
サポートしているキーワードは次のとおりです。
RCSキーワードは大文字/小文字を区別します。キーワードの後のコロン(例えば、 |
|
制限付きのキーワード拡張 |
キーワード |
|
排他的にファイルを作業状態にする(ロックする) |
設定すると、一度に1人のユーザしか、編集目的で作業状態にすることができません。 複数の作業者による変更のマージが不可能であるバイナリファイルタイプ(グラフィック等)に有用です。 |
|
オリジナルの更新日時を保存する |
ローカルファイルシステム上のファイルのタイムスタンプがサブミット時に保存され、同期時に復元されます。Windows OSはファイルのタイムスタンプに依存するため、Windows環境下におけるサードパーティのdllにとって有用です。デフォルトでは、更新日時はファイルを同期させた日時に設定されます。 |
|
最新リビジョンだけがサーバで記憶される |
旧リビジョンは、新しいリビジョンのサブミットによってディポから削除されます。実行ファイルまたは |
|
最新の |
新しいリビジョンを |
|
ファイルは常にクライアントサイドで書き込み可能 |
Perforceによりファイルの読み取り/書き込みの設定が管理されるため、この設定は推奨されません。 |
|
クライアントサイドで実行ビットをセット |
実行ファイルに使用します。 |
|
アーカイブトリガが必要 |
Perforceサービスはファイルへのアクセスのために |
Perforceでのファイルの保存形式を指定する
通常、バイナリファイルのファイルリビジョンはすべてディポ内に保存されますが、テキストファイルでは前のリビジョンが保存された後に加えられた変更だけが保存されます。これはデルタ記憶と呼ばれ、PerforceではRCSフォーマットを使用してそのデルタを記憶します。ファイルタイプにより、ファイル全体を記憶するかデルタ記憶を使用するか決定されます。
ファイルタイプのいくつかは、ディポに記憶される際、gzip
フォーマットに圧縮されます。圧縮はファイルをサブミットするときに行われ、解凍はファイルを同期(ファイルをディポからワークスペースにコピー)させるときに行われます。クライアントワークスペースは常に、サブミットされた時点のファイルを保持します。
警告
不用意にファイルが切り捨てられないようにするため、バイナリファイルをtext
として保存しないでください。Windowsクライアントマシンのバイナリファイルをテキストとして保存すると、そのファイルにWindowsのファイル終了キャラクタ^Z
が含まれている場合、^Z
までの部分のみがディポに保存されます。
Unicodeのファイルにファイルタイプを割り当てる
PerforceサービスをUnicodeモードで起動すると、Unicode文字を含むファイル名やPerforceメタデータに対するサポートを有効にできます。非Unicodeモードで起動する場合、ファイル名およびメタデータはASCIIでなければなりませんが、Unicode文字を含むテキスト形式ファイルは継続してサポートされます。
Unicode文字を含むテキスト形式ファイルを管理する必要があるものの、Perforceメタデータ内にUnicode文字が必要でない場合は、PerforceをUnicodeモードで起動する必要はありません。Unicode文字を含むテキスト形式ファイルには、utf16
というファイルタイプを割り当ててください。
サービスがどちらのモードを使用しているかは、システム管理者にお尋ねください。
どちらのモードでも、Perforceでは一連のファイルタイプがサポートされており、それによってPerforceサーバへのファイルの格納方法およびファイルの比較の可否が決定されます。以降のセクションでは、Unicode環境においてテキスト形式ファイルを管理する際の考慮事項について説明します。
ディポにファイルを追加するときにファイルタイプを割り当てるには、-t
オプションを指定します。例:
p4 add -t utf16 newfile.txt
ディポ内のファイルのファイルタイプを変更するには、-t
オプションを指定してファイルを編集目的で作業状態にします。例:
p4 edit -t utf16 myfile.txt
ファイルタイプを選択する
Unicodeを含むテキスト形式ファイルにファイルタイプを割り当てる際には、以下のことを考慮します。
-
ファイルの編集および比較が必要ですか?
多くのIDEでは、ユーザが手動で編集や比較を実行できない構成ファイルが作成されます。それらのファイルが変換されないように、当該ファイルには
binary
ファイルタイプを割り当てます。 -
サイトでは異なる文字セットを使用するファイルを管理していますか?
これに当てはまる場合は、当該ファイルを
utf16
ファイルタイプを使用して格納することにより、変換は不可であるが比較が可能であるようにしてください。
Unicodeモードのサービスでは、Unicodeファイルの内容をP4CHARSET
で指定された文字セットに変換します。以下の表に、Unicodeモードのサービスが様々な種類のテキストファイルをどのように管理するかについて、さらに詳しく示します。
テキストのファイルタイプ |
Perforceでの格納形式(Unicodeモード) |
検証を行うか |
|
クライアントプラットフォームに基づく変換 |
---|---|---|---|---|
|
拡張ASCII |
検証しない |
実行されない |
実行されない |
|
UTF-8 |
検証する(UTF-16および |
実行される |
実行されない |
|
UTF-8 |
検証する(UTF-16として) |
実行されない |
実行されない |
非Unicodeモードのサービスでは、unicode
ファイルの内容について変換も検証も行いません。UTF-8のデータは、クライアントプラットフォームに適切なバイトオーダーを使用してUTF-16に変換されます。編集の際にそのようなファイルが破壊されないようにするため、編集用ソフトウェアでファイルをUTF-8またはUTF-16として保存します。
テキストのファイルタイプ |
Perforceでの格納形式(Unicodeモード) |
検証を行うか |
|
クライアントプラットフォームに基づく変換 |
---|---|---|---|---|
|
拡張ASCII |
検証しない |
実行されない |
実行されない |
|
UTF-8 |
検証する(UTF-16および |
実行されない |
実行されない |
|
UTF-8 |
検証する(UTF-16として) |
実行されない |
実行される |
Perforceのファイルタイプ検出とUnicode
Unicodeモードおよび非Unicodeモードの両方において、ディポにファイルを追加する際にファイルタイプを割り当てていない場合、(デフォルトで)Perforceはファイルの最初の65536文字(バイト)を調べることによりファイルタイプの検出を試みます。印刷不能文字が検出されると、ファイルにはbinary
のファイルタイプが割り当てられます。(Unicodeモードではもう1つの検証が実行されます。印刷不能文字がなく、P4CHARSET
により指定された文字セットを使用して変換可能なHigh ASCII文字がある場合、ファイルにはunicode
ファイルタイプが割り当てられます。)
最後に(Unicodeモードまたは非Unicodeモードで稼働しているサービスに対して)、UTF-16 BOMが存在する場合、ファイルにはutf16
ファイルタイプが割り当てられます。それ以外の場合には、ファイルにはtext
ファイルタイプが割り当てられます。(Unicodeモードではもう1つの検証が実行されます。P4CHARSET
によって指定された文字セットに定義されていないHigh ASCII文字を含むファイルにはbinary
ファイルタイプが割り当てられます。)
ほとんどの場合、Perforceにより検出されたデフォルトのファイルタイプをオーバーライドする必要はありません。Perforceのデフォルトのファイルタイプ検出をオーバーライドしなければならない場合は、p4 typemapコマンドを実行することにより、ファイルの拡張子に従ってPerforceファイルタイプを割り当てることができます。typemap機能の使用に関して詳しくは、『Perforceサーバ管理者ガイド: 基本』および『P4コマンドリファレンス』を参照してください。
ファイルタイプをオーバーライドする
一部のファイルフォーマット(Adobe PDF、リッチテキストフォーマットなど)は、実際にはbinary
であるのに、Perforceにより誤ってtext
として検出されることがあります。この問題を防止するため、システム管理者はp4
typemapコマンドを使用して特定のファイルタイプの保存方法を指定することができます。タイプマップテーブルに指定されたファイルタイプは、-t
オプションを付けて指定し直し、オーバーライドすることができます。
filetype
タイムスタンプを保存する
通常、Perforceはファイルを同期させるときにタイプスタンプを更新します。更新日時(+m
)修飾子は、ファイルの元のタイムスタンプを保存しておく必要がある開発者のために用意されています。この修飾子により、自分のクライアントワークスペースに同期させたファイルのタイムスタンプを、ファイルがサブミットされた時点のマシンの時刻とすることができます。
Windowsでは、(開発環境下でもOSによっても)バージョン情報取得のためにサードパーティのdllのタイムスタンプが使用されます。+m
修飾子を使用するとオリジナルのタイムスタンプを保存できるため、誤ってバージョンが不一致となることを防ぐことができます。+m
修飾子は、(それが適用されるファイルに対する)クライアントワークスペースの[no]modtime
の設定をオーバーライドします。この設定について詳しくは、「ファイルタイプ修飾子」を参照してください。
RCSキーワードを拡張する
RCS(リビジョン管理システム)は初期のバージョン管理システムであり、ソースファイルに組み込み可能なキーワードが定義されています。RCSキーワードはファイルが格納場所に書き込まれるたびに更新されます。PerforceではいくつかのRCSキーワードがサポートされています。
1つのファイルについてRCSキーワード拡張を有効にするには、+k
修飾子を使用します。RCSキーワードは次のように拡張されます。
キーワード |
拡張対象 |
例 |
---|---|---|
|
ファイルをサブミットするPerforceユーザ |
|
|
サブミットされるファイルに付けるPerforceチェンジリスト番号 |
|
|
フォーマット |
|
|
フォーマット 日付と時刻は、サブミット時点のPerforceサービス上の現地時間に準ずる。 |
|
|
ディポシンタックスによるファイル名のみ(リビジョン番号なし) |
|
|
|
|
|
ディポシンタックスによるファイル名およびリビジョン番号 |
|
|
Perforceリビジョン番号 |
|
キーワード拡張を行わずにファイルを表示するには、p4 print -k
filename
を使用します。