Perforceのファイルタイプ

Perforceでは一連のファイルタイプがサポートされており、ファイルタイプに従ってPerforceサービスによるファイルの保存方法やファイル比較の可否が決定されます。ファイルを追加するとき、Perforceは自動的にファイルタイプを識別しようとします。最初にPerforceは、ファイルが通常のファイルかシンボリックファイルかを識別し、次にファイルの最初の部分を調べてそれがtextbinaryかを判断します。非テキストキャラクタが見つかれば、そのファイルはbinaryと見なされ、見つからない場合はtextと見なされます。(Unicode環境ではファイルの検出方式が異なります。「Perforceのファイルタイプ検出とUnicode」を参照してください。)

Perforceが制御しているファイルのタイプを識別するには、p4 openedまたはp4 filesコマンドを発行します。Perforceファイルタイプを変更するには、-tfiletypeオプションを指定します。ファイルタイプの変更について詳しくは、『P4コマンドリファレンス』のp4 addp4 edit、およびp4 reopenの各項の説明を参照してください。

Perforceのファイルタイプ

Perforceは以下のファイルタイプをサポートします。

キーワード

解説

コメント

記憶タイプ

apple

Macファイル

Macデータフォーク、リソースフォーク、ファイルタイプおよびファイルクリエーターのAppleSingleの記憶。

詳細については、Macクライアントリリースノートを参照。

フルファイル、圧縮、AppleSingleフォーマット

binary

非テキストファイル

ワークスペースにバイナリファイルとして同期されます。ディポ内に圧縮された状態で記憶されます。

フルファイル、圧縮

resource

Macリソースフォーク

(旧式)このタイプは後方互換性を保つためにサポートされていますが、appleファイルタイプを使用することを推奨します。

フルファイル、圧縮

symlink

シンボリックリンク

UNIX、OS Xまたは最近のバージョンのWindows環境にあるPerforceアプリケーションでは、これらのファイルはシンボリックリンクとして扱われます。その他のプラットフォームでは、これらのファイルは(小さい)テキストファイルと同様に示されます。

デルタ

text

テキストファイル

ワークスペースにテキストとして同期されます。行末変換が自動的に実行されます。

デルタ

unicode

Unicodeファイル

UnicodeモードのPerforceサービスはunicodeファイルタイプをサポートします。このタイプのファイルはP4CHARSETにより指定されたローカルの文字セットに変換されます。

Unicodeモードで稼働していないPerforceサービスでは、unicodeファイルタイプはサポートされていません。

詳細については、『Perforce国際語モードに関する注意事項』を参照してください。

デルタ、UTF-8

utf16

Unicodeファイル

サービスがUnicodeモードで動作しているか否かにかかわらず、ファイルはUTF-8で転送され、クライアントワークスペースでUTF-16(BOM付き、ユーザのマシンに適切なバイトオーダー)にコード変換されます。

詳細については、『Perforce国際語モードに関する注意事項』を参照してください。

デルタ、UTF-8

ファイルタイプ修飾子

特定のファイルのベースタイプにファイルタイプ修飾子を適用することにより、タイプスタンプの保存、RCSキーワードの拡張、サービス上でのファイルの保存方法の指定などができます。修飾子のファイルタイプへの適用に関して詳しくは、「Perforceでのファイルの保存形式を指定する」をご覧ください。

以下の表に、ファイルタイプ修飾子を示します。

修飾子

解説

コメント

+C

Perforceが各ファイルリビジョンのフル圧縮バージョンを記憶する

binaryファイルおよび10MBを超える新規追加のtextunicodeutf16ファイルでのデフォルトの記憶メカニズム。

+D

PerforceがデルタをRCSフォーマットで記憶する

textファイルでのデフォルトの記憶メカニズム。

+F

Perforceがリビジョンごとにフルファイルを記憶する

デルタの記憶が無意味または非効率的であるような、テキストとして処理されない長いASCIIファイル(PostScriptファイルなど)に使用します。

+k

RCS(リビジョン制御システム)キーワード拡張

サポートしているキーワードは次のとおりです。

  • $Id$

  • $Header$

  • $Date$ サブミット日

  • $DateUTC$ UTCタイムゾーンでのサブミット日

  • $DateTime$ サブミット日付と時刻

  • $DateTimeUTC$ UTCタイムゾーンでのサブミット日付と時刻

  • $DateTimeTZ$サーバでのサブミット日付と時刻(結果には実際のタイムゾーンを含む)

  • $Change$

  • $File$

  • $Revision$

  • $Author$

RCSキーワードは大文字/小文字を区別します。キーワードの後のコロン(例えば、$Id:$)は任意です。

+ko

制限付きのキーワード拡張

キーワード$Id$および$Header$だけを拡張します。この修飾子の対は、主に2000.1より前のPerforceに遡って互換できるようにする目的で存在し、旧バージョンのPerforceにおける修飾子+k(ktext)に対応します。

+l

排他的にファイルを作業状態にする(ロックする)

設定すると、一度に1人のユーザしか、編集目的で作業状態にすることができません。

複数の作業者による変更のマージが不可能であるバイナリファイルタイプ(グラフィック等)に有用です。

+m

オリジナルの更新日時を保存する

ローカルファイルシステム上のファイルのタイムスタンプがサブミット時に保存され、同期時に復元されます。Windows OSはファイルのタイムスタンプに依存するため、Windows環境下におけるサードパーティのdllにとって有用です。デフォルトでは、更新日時はファイルを同期させた日時に設定されます。

+S

最新リビジョンだけがサーバで記憶される

旧リビジョンは、新しいリビジョンのサブミットによってディポから削除されます。実行ファイルまたは.objファイルに有用です。

+Sn

最新のn個のリビジョンだけが格納されます。nは1から10まで、または16、32、64、128、256、512のいずれかの数値です。

新しいリビジョンをn個を超えてサブミットするか、既存の+Snファイルのnを現在のリビジョン数より少ない値に変更すると、古いリビジョンはディポから消去されます。詳しくは、『P4コマンドリファレンス』を参照してください。

+w

ファイルは常にクライアントサイドで書き込み可能

Perforceによりファイルの読み取り/書き込みの設定が管理されるため、この設定は推奨されません。

+x

クライアントサイドで実行ビットをセット

実行ファイルに使用します。

+X

アーカイブトリガが必要

Perforceサービスはファイルへのアクセスのためにarchiveトリガを実行します。詳しくは、『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モード)

検証を行うか

P4CHARSETに基づく変換

クライアントプラットフォームに基づく変換

text

拡張ASCII

検証しない

実行されない

実行されない

unicode

UTF-8

検証する(UTF-16およびP4CHARSETとして)

実行される

実行されない

utf16

UTF-8

検証する(UTF-16として)

実行されない

実行されない

非Unicodeモードのサービスでは、unicodeファイルの内容について変換も検証も行いません。UTF-8のデータは、クライアントプラットフォームに適切なバイトオーダーを使用してUTF-16に変換されます。編集の際にそのようなファイルが破壊されないようにするため、編集用ソフトウェアでファイルをUTF-8またはUTF-16として保存します。

テキストのファイルタイプ

Perforceでの格納形式(Unicodeモード)

検証を行うか

P4CHARSETに基づく変換

クライアントプラットフォームに基づく変換

text

拡張ASCII

検証しない

実行されない

実行されない

unicode

UTF-8

検証する(UTF-16およびP4CHARSETとして)

実行されない

実行されない

utf16

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キーワードは次のように拡張されます。

キーワード

拡張対象

$Author$

ファイルをサブミットするPerforceユーザ

$Author: bruno $

$Change$

サブミットされるファイルに付けるPerforceチェンジリスト番号

$Change: 439 $

$Date$

フォーマットYYYY/MM/DDによる、最終サブミットの日付

$Date: 2011/08/18 $

$DateTime$

フォーマットYYYY/MM/DDhh:mm:ssによる、最終サブミットの日付

日付と時刻は、サブミット時点のPerforceサービス上の現地時間に準ずる。

$DateTime: 2011/08/18 23:17:02 $

$File$

ディポシンタックスによるファイル名のみ(リビジョン番号なし)

$File: //depot/path/file.txt $

$Header$

$Id$と同様

$Header: //depot/path/file.txt#3 $

$Id$

ディポシンタックスによるファイル名およびリビジョン番号

$Id: //depot/path/file.txt#3 $

$Revision$

Perforceリビジョン番号

$Revision: #3 $

キーワード拡張を行わずにファイルを表示するには、p4 print -k filenameを使用します。