p4 typemap
概要
ファイル名をファイルタイプにマッピングしているテーブルを修正します。
構文
p4 [g-opts
] typemap
p4 [g-opts
] typemap -o
p4 [g-opts
] typemap -i
解説
p4 typemapコマンドにより、Perforce管理者は、Perforceファイルタイプをファイル指定にリンクするテーブルを設定できます。ファイル名がタイプマップテーブル中のエントリに適合する場合、このコマンドは、ファイル名に適合するファイルタイプがないときにPerforceが割り当てるファイルタイプをオーバーライドします。
デフォルトでは、Perforceはファイルの先頭の65536バイトの分析に基づいて、ファイルのタイプがtext
なのかbinary
なのかを自動的に判別します。先頭の65536バイトの各バイトで最上位ビットが0の場合、Perforceはこのファイルタイプをtext
とみなし、そうでなければbinary
とみなします。.zip
形式(.jar
ファイルを含む)で圧縮されたファイルも自動的に検出され、ubinary
タイプが割り当てられます。
このデフォルトの動作は、-t
オプションを使用すればオーバーライドできますが、ファイルタイプが(常時ではなく)おおむね正しく検出される場合、このオプションを指定し忘れてしまうことが少なくありません。典型的な例は、PDFファイル(65536バイト以上のASCIIコメントで始まるものがあります)や、通常は書式コードが埋め込まれているRTFファイルの場合に見られます。
filetype
p4 typemapコマンドは、より完全な解決策を提供します。このコマンドで管理者は、特定のファイル(例えば名前が.pdf
や.rtf
で終わるファイル)がディポに追加されるとき、デフォルトのタイプ検出機構が働かないようにし、常に希望するPerforceファイルタイプが確実に割り当てられるようにすることができます。
ユーザは、Perforceのコマンドラインでファイルタイプを明確に指定することにより、タイプマップテーブルで定義されたあらゆるファイルタイプマッピングをオーバーライドできます。
フォームフィールド
p4 typemapのフォームには[TypeMap:
]フィールドだけがあり、このフィールドにはディポシンタックスで指定されたファイルパターンにファイルタイプをリンクする値のペアが含まれます。
列 |
解説 |
---|---|
|
有効なPerforceファイルタイプ。 有効なファイルタイプのリストについては、「“ファイルタイプ”」を参照してください。 |
|
ディポシンタックスのファイルパターン。ユーザがこのパターンに適合するファイルを追加すると、そのデフォルトのファイルタイプはテーブルで指定されたファイルタイプとなります。ファイルをタイプマップから除外するには、除外( |
オプション
|
エディタを起動せずに、標準入力からタイプマップテーブルを読み取ります。 |
|
エディタを起動せずに、標準出力にタイプマップテーブルを書き出します。 |
|
「“グローバルオプション”」を参照してください。 |
使用上の留意点
ファイル引数にリビジョン指定子を使えるか? |
ファイル引数にリビジョン範囲を使えるか? |
最低限必要なアクセスレベル |
---|---|---|
適用外 |
適用外 |
|
-
希望するサブディレクトリまたはその配下にあって、特定の拡張子を持つすべてのファイルを指定するには、ディレクトリ名に続けてピリオドを4個使用し、その後に拡張子を付けます(例えば、
//
)。最初の3つのピリオドは「このレベル以下にあるすべてのファイル」を指定します。4番目のピリオドと付属の拡張子は、「これらの文字で終わる」と解析されます。path
/....ext
-
タイプマップテーブルでは、ファイルタイプ修飾子を使用できます。ディレクトリツリー全体にわたるキーワード拡張を強制的にオン/オフにする場合、元のファイルの更新時刻(
+m
ファイルタイプ修飾子)をサードパーティ製DLLのディレクトリに強制的に保存する場合、または悲観的ロックのポリシーを採用する場合などに役立ちます。 -
複数のファイルタイプ修飾子は続けて指定してください。例えば、
binary+lFS10
とすると、binary
タイプで排他的作業状態(l
)であり、圧縮されずに完全な形で格納され(F
)、最新の10リビジョンのみが保存されている(S10
)ファイルを意味します。構文の詳細については、「“ファイルタイプ”」を参照してください。 -
-t
オプションとファイルタイプ修飾子を使用してコマンドラインでファイルタイプを指定する場合、参照しているファイルがp4 typemapマッピングの対象になっていれば、コマンドラインで指定したファイルタイプは、タイプマップテーブルで指定したファイルタイプをオーバーライドします。
例
Perforceサービスに、すべてのPDFおよびRTFファイルをbinary
とみなすよう通知するには、p4 typemapを実行してタイプマップテーブルを以下のように変更します。
Typemap: binary //....pdf binary //....rtf
指定子中の最初の3個のピリオド(「...
」)は、ルートディレクトリ配下のすべてのファイルがマッピングの一部に含まれることを規定するPerforceワイルドカードです。4個目のピリオドとファイルの拡張子は、この指定子が".pdf
" (または".rtf
")で終わるファイルに適用されることを規定しています。
サイトによっては、より複雑な状況が発生することもあります。例えば、ディポ内のあるエリアにいるユーザが、文書を収録しているプレーンなASCIIテキストファイルに拡張子.doc
を使用する一方で、別のエリアで作業しているユーザが、人気ワープロソフトで使用されているバイナリファイル形式でファイルを参照するために.doc
を使用する、といった状況です。このような状況で有効なタイプマップテーブルは、次のようになります。
Typemap: text //depot/dev_projects/....doc binary //depot/corporate/annual_reports/....doc
すべての.c
および.h
ファイルについてキーワード拡張を有効にし、自分の.txt
ファイルについてはキーワード拡張を無効にするには、次のようにします。
Typemap: text+k //depot/dev_projects/main/src/....c text+k //depot/dev_projects/main/src/....h text //depot/dev_projects/main/src/....txt
指定したディレクトリ内のファイルに、確実に元のファイルの修正時刻を(サブミットの日付に関係なく)保存させるには、次のようにします。
Typemap: binary //depot/dev_projects/main/bin/... binary+m //depot/dev_projects/main/bin/thirdpartydll/...
bin
ディレクトリやその配下にあるすべてのファイルに、タイプbinary
が割り当てられます。後のマッピングが前のマッピングをオーバーライドするので、サブディレクトリbin/thirdpartydll
内のファイルには、タイプbinaryではなくタイプbinary+m
が割り当てられます。+m
(修正時刻)ファイルタイプ修飾子の詳細については、「“ファイルタイプ”」を参照してください。
デフォルトでは、Perforceは同時並行開発をサポートしていますが、ファイルを編集のために作業状態にするのは一度に1人のユーザだけであることが想定される環境では、部分ファイルタイプで修飾子+l
(排他的作業状態)を使用して悲観的ロックを実施することができます。次のようにタイプマップを定義すると、ディポ内にあるすべての新規で追加されたファイルに対し+l
修飾子が自動的に適用されます。
Typemap: +l //depot/...