ファイルタイプ
概要
Perforceは、6つの基本ファイルタイプをサポートしています。
-
textファイル -
圧縮された
binaryファイル -
Mac本来の
appleファイル -
Macのリソースフォーク(
resource) -
シンボリックリンク(
symlink) -
unicodeファイルおよびutf16ファイル
これらの基本タイプには、RCSキーワード拡張やファイル圧縮などをサポートするため、ファイルタイプ修飾子が適用されます。
ファイルを追加するときには、Perforceはまずタイプマップテーブルを調べ、追加しようとしているファイルのファイルタイプをシステム管理者が定義しているかどうかを確かめます。一致するものが見つかれば、そのファイルタイプがタイプマップテーブルの定義に従って設定されます。一致するものが見つからない場合、Perforceは構成可能変数filesys.binaryscanに従って該当ファイルの先頭のバイト(デフォルトでは65536バイト)を調べ、それがtextかbinaryかを判断した上、ファイルをディポに保存します。
デフォルトでは、テキストファイルのリビジョンはリバースデルタ形式で保存され、構成可能変数filetype.maxtextsizeによる制限値(デフォルトでは10MB)を超える、新規に追加されたテキストファイルにはtext+Cファイルタイプが割り当てられて完全な形で保存されます。.zip形式(.jarファイルを含む)で圧縮されたファイルも自動的に検出され、ubinaryタイプが割り当てられます。その他のバイナリファイルのリビジョンは、圧縮されてファイル全体が保存されます。
(Unicode環境のファイルでは検出方法が異なります。詳細については、「Perforce国際語モードに関する注意事項」を参照してください。)
Perforceの管理者は、タイプマップ機能(p4 typemap)を使用してPerforceのデフォルトのファイルタイプ検出機構をオーバーライドすることができます。この機能は、binaryファイル形式(例えば、Adobe PDFやリッチテキスト形式)に対して有効です。binaryファイルは大量のASCIIテキストから始まっている場合があるため、この機能がなければtextファイルと間違えられてしまう可能性があるからです。
Perforce管理者は構成可能変数filesys.binaryscanおよびfiletype.maxtextsizeを使用して(p4 configure参照)、テキスト/バイナリの検出に対するデフォルトの制限である65536バイトと、RCSテキストファイルのサイズ制限である10MBをそれぞれ変更することができます。
基本ファイルタイプ
Perforceの基本ファイルタイプは、次のとおりです
|
キーワード |
解説 |
注釈 |
サーバ記憶 |
|---|---|---|---|
|
|
テキストファイル |
ワークスペースにテキストとして同期されます。行末変換が自動的に実行されます。 |
RCS形式のデルタ |
|
|
非テキストファイル |
ワークスペースにバイナリファイルとして同期されます。ディポ内に圧縮された状態で記憶されます。 |
フルファイル、圧縮 |
|
|
シンボリックリンク |
UNIX、OS Xまたは最近のバージョンのWindows環境にあるPerforceアプリケーションでは、これらのファイルはシンボリックリンクとして扱われます。その他のプラットフォームでは、これらのファイルは(小さい)テキストファイルと同様に示されます。 |
RCS形式のデルタ |
|
|
マルチフォークMacファイル |
Macのデータフォーク、リソースフォーク、ファイルタイプ、およびファイルクリエーターのAppleSingle記憶。 詳細については、Macクライアントのリリースノートを参照してください。 |
フルファイル圧縮、AppleSingle形式 |
|
|
Macリソースフォーク |
Perforce 99.1以前におけるMacリソースフォークの唯一のファイルタイプ。サポートは続けていますが、 詳細については、Macクライアントのリリースノートを参照してください。 |
フルファイル、圧縮 |
|
|
Unicodeファイル |
UnicodeモードのPerforceサービスは
UnicodeモードではないPerforceサービスは、 詳細については、『Perforce国際語モードに関する注意事項』を参照してください。 |
UTF-8形式のRCSデルタ |
|
|
Unicodeファイル |
サービスがUnicodeモードで動作しているか否かにかかわらず、ファイルはUTF-8で転送され、クライアントワークスペースでUTF-16(BOM付き、ユーザのマシンに適切なバイトオーダー)にコード変換されます。 詳細については、『Perforce国際語モードに関する注意事項』を参照してください。 |
UTF-8形式のRCSデルタ |
ファイルタイプ修飾子
ファイルタイプ修飾子は、次のようになっています。
|
修飾子 |
解説 |
注釈 |
|---|---|---|
|
|
ファイルは常にクライアントで書き込み可能です。 |
|
|
|
クライアントで実行権を付与します。 |
実行ファイルに使用します。 |
|
|
旧式のキーワード拡張 |
この修飾子は本来、Perforceの2000.1より前のバージョンとの下位互換性を保つためのもので、Perforceの旧バージョンの |
|
|
RCSキーワード拡張 |
RCS (Revision Control System: リビジョン管理システム)キーワードを拡張します。 RCSキーワードは大文字と小文字を区別します。
ファイルの中でキーワードを使用するときは、キーワードの後のコロン(例えば、 UTCキーワードは、グローバルに分散されたインストール環境でイベントを記述するのに適しています。 サポートしているキーワードは次のとおりです。
|
|
|
排他的な作業状態にする(ロック) |
設定すると、ファイルを編集のための作業状態にできるのは、同時に1人だけになります。 複数の開発者による変更をマージしても意味をなさないバイナリファイルタイプ(例えば図表)に対して有効です。 |
|
|
Perforceは、各ファイルリビジョンの完全圧縮バージョンを格納します。 |
|
|
|
Perforceは、デルタをRCS形式で格納します。 |
|
|
|
Perforceは、リビジョンごとにフルファイルを、圧縮せずに格納します。 |
サイズが大きいバイナリファイルや、PostScriptファイルのようにユーザがテキストと読み取れない長いASCIIファイルに対して有効です。 |
|
|
最新リビジョンだけが格納されます。 |
新しいリビジョンがサブミットされると、古いリビジョンはディポから消去されます。実行ファイルまたは |
|
|
最新の |
新しいリビジョンを |
|
|
オリジナルの修正時刻を保存します。 |
ファイルのローカルファイルシステム上のタイムスタンプが、サブミットのときに保存、同期のときにリストアされます。Windows環境におけるサードパーティ製のDLLに対して有効です。 |
|
|
アーカイブトリガを必要とします。 |
Perforceサービスはファイルへのアクセスのために |
ファイルタイプは通常リビジョン間で保持されますが、add、edit、またはreopen操作中に-tオプションでオーバーライドや変更することができます。
引数filetypeは、[のように指定します。例えば、basetype]
+modifiersscript.shのタイプを実行ファイルテキストに変更し、RCSキーワード拡張を行うには、p4 edit
-t text+kx script.shを使用します。
部分ファイルタイプも使用することができます。例えば既存のtextファイルをtext+xに変更したい場合、p4 reopen -t +x
script.shとします。多くの部分ファイルタイプ修飾子は、ファイルタイプに付加するものですが、格納修飾子(+C、+D、+F)を使うとファイルの格納形式が変更されます。修飾子を消去したい場合はフルファイルタイプを指定しなければなりません。
一般的なファイル拡張子に対するPerforceのファイルタイプ
以下の表に、一般的なファイル拡張子と、それに対応するPerforceのファイルタイプおよび修飾子を示します。
|
ファイルタイプ |
Perforceファイルタイプ |
解説 |
|---|---|---|
|
|
|
アクティブサーバページファイル |
|
|
|
Windowsビデオファイル |
|
|
|
Windowsビットマップファイル |
|
|
|
Btrieveデータベースファイル |
|
|
|
カンファレンスリンクファイル |
|
|
|
カスケードスタイルシートファイル |
|
|
|
Microsoft Wordドキュメント |
|
|
|
Microsoft Wordテンプレート |
|
|
|
エクスポートファイル(Microsoft Visual C++) |
|
|
|
GIF画像ファイル |
|
|
|
Gzip圧縮ファイル |
|
|
|
HTMLファイル |
|
|
|
HTMLファイル |
|
|
|
アイコンファイル |
|
|
|
アクティブサーバインクルードファイル |
|
|
|
アプリケーション初期設定ファイル |
|
|
|
JPEG画像ファイル |
|
|
|
Javaスクリプト言語ソースコードファイル |
|
|
|
ライブラリファイル(複数のプログラミング言語) |
|
|
|
ログファイル |
|
|
|
MPEGビデオファイル |
|
|
|
Adobe PDFファイル |
|
|
|
Sybase Power Designerファイル |
|
|
|
Microsoft PowerPointファイル |
|
|
|
Microsoft Excelファイル |
Perforceのファイルタイプとファイル名とのマッピングについての詳細は、p4 typemapコマンドをご覧ください。
キーワード拡張
RCSキーワードは、次のように拡張されます。
|
キーワード |
拡張先 |
例 |
|---|---|---|
|
|
ディポシンタックス内のファイル名とリビジョン番号 |
|
|
|
|
|
|
|
最後のサブミットの日付を、 |
|
|
|
最後のサブミットの日付と時刻を、 日付と時刻は、サブミット時のPerforceサービスにおけるローカルタイムで記録されます。 |
|
|
|
ファイルがサブミットされたPerforceチェンジリスト番号 |
|
|
|
ディポシンタックスで表記されたファイル名のみ(リビジョン番号なし) |
|
|
|
Perforceリビジョン番号 |
|
|
|
ファイルをサブミットしているPerforceユーザ |
|
使用上の留意点
-
デルタ記憶(
textファイルのデフォルト方式)は、ファイルのリビジョン間の差分(つまり、デルタ)だけを保存する方法です。フルファイル記憶(binaryファイルでのデフォルト方式)は、ファイル全体を保存します。ファイルタイプにより、フルファイル記憶とデルタ記憶のどちらを使用するかが決まります。Perforceは、デルタ記憶にRCS形式を使用します。 -
ファイルタイプによっては、ディポ内に保存するために
gzip形式に圧縮されます。圧縮はサブミットのプロセス中に行われ、解凍は同期中に行われます。プロセスはユーザに対して透過的です。 -
非UNIXクライアントワークスペース上のシンボリックリンクは、リンク先のファイルへの相対パスを含む小さなテキストファイルとして表示されます。非UNIXクライアントでこれらのファイルを編集するときは注意してください。これらのファイルをディポにサブミットすると、シンボリックリンクがUNIXクライアントワークスペース上に存在しないファイルを指示することになる場合があるからです。
-
ファイルタイプを変更しても、ディポに保存された以前のリビジョンには影響しません。
例えば、
+S(一時オブジェクト)修飾子を追加することによりファイルタイプを変更することは、ディポ内のファイルの最新nn個のリビジョンのみを保存するようPerforceに通知したことになります。既存のファイルを一時オブジェクトに変更した場合、それ以降(n番目より後)は古くなった最新リビジョンが消去されるようになりますが、+S修飾子を追加する前のリビジョンについては影響を受けません。(n+S修飾子を追加した後の最新でないリビジョンを同期しようとすると、そのファイルはクライアントワークスペースから削除されます。このようなリビジョンは、p4 filelogの出力においてnpurge操作として表示されます。) -
一時オブジェクトファイル(
+Sおよび+S)に対してp4 integrateを実行すると、遅延コピーは作成されません。反映されたntempobjファイルは共有バージョン化サービス上で追加のディスクスペースを消費します。 -
修正時刻(
+m)修飾子は特殊な事例であり、ファイルのオリジナルのタイムスタンプを保持したい開発者が使用するものです。クライアントワークスペースで
modtimeオプションが使用されると、ファイル日付がリビジョンごとに進むことは保証されません。例えば、ファイルがコピーされて反映されると(「theirsを承諾」)、ファイルには反映元ファイルのタイムスタンプが採用されます。ユーザが古い日付のファイルをチェックインすると、クライアントワークスペースのファイルにはそれと同じ古い日付が使われます。通常、Perforceはファイルを同期させるときにタイムスタンプを更新します。modtimeオプションにより、p4 sync後のクライアントワークスペースにあるファイルのタイムスタンプを、確実にサブミット時のファイルにあるオリジナルのタイムスタンプに戻すことができます。(つまり、サブミット時のPerforceバージョン化サービスでの時刻でもなく、同期時のユーザのワークステーションでの時刻でもありません。)この修飾子が有効になる典型的な事例は、Windows環境によくあるサードパーティ製DLLを含む開発です。こうしたファイルのタイムスタンプは、通常(開発環境内やOSによって)バージョン情報の代わりとして使用されるため、Perforceユーザのクライアント設定にかかわらず、時々ファイルのオリジナルのタイムスタンプを保持する必要があります。
ファイルの
+m修飾子は次のような状況を引き起こします。+m修飾子が設定されている場合、Perforceはファイルを同期するときにクライアントワークスペースのmodtime(“サブミット時のファイルのタイムスタンプ”)またはnomodtime(“同期時のクライアントでの日付と時刻”)オプション設定を無視し、常にサブミット時のファイルのオリジナルのタイムスタンプをリストアします。 -
Perforceの99.1より前のバージョンでは、一連のキーワードを使用してファイルタイプを指定していました。以下の表は、旧キーワードとそれに対応する現在の基本ファイルタイプおよび修飾子とをリストにしたものです。
旧キーワード
解説
基本ファイルタイプ
修飾子
textテキストファイル
textなし
xtext実行可能なテキストファイル
text+xktextRCSキーワード拡張を行ったテキストファイル
text+kkxtextRCSキーワード拡張を行った実行可能なテキストファイル
text+kxbinary非テキストファイル
binaryなし
xbinary実行可能なバイナリファイル
binary+xctext圧縮されたテキストファイル
text+Ccxtext圧縮された実行可能なテキストファイル
text+Cxsymlinkシンボリックリンク
symlinkなし
resourceMacリソースフォーク
resourceなし
uresource圧縮されていないMacリソースフォーク
resource+Fltext長いテキストファイル
text+Fxltext実行可能な長いテキストファイル
text+Fxubinary圧縮されていないバイナリファイル
binary+Fuxbinary圧縮されていない実行可能なバイナリファイル
binary+Fxtempobj一時オブジェクト
binary+FSwctempobj圧縮された一時オブジェクト
binary+Swxtempobj実行可能な一時オブジェクト
binary+FSwxxunicode実行可能なUnicodeファイル
unicode+xxutf16実行可能なUTF-16ファイル
utf16+x