ファイルタイプ

概要

Perforceは、6つの基本ファイルタイプをサポートしています。

  • textファイル

  • 圧縮されたbinaryファイル

  • Mac本来のappleファイル

  • Macのリソースフォーク(resource)

  • シンボリックリンク(symlink)

  • unicodeファイルおよびutf16ファイル

これらの基本タイプには、RCSキーワード拡張やファイル圧縮などをサポートするため、ファイルタイプ修飾子が適用されます。

ファイルを追加するときには、Perforceはまずタイプマップテーブルを調べ、追加しようとしているファイルのファイルタイプをシステム管理者が定義しているかどうかを確かめます。一致するものが見つかれば、そのファイルタイプがタイプマップテーブルの定義に従って設定されます。一致するものが見つからない場合、Perforceは構成可能変数filesys.binaryscanに従って該当ファイルの先頭のバイト(デフォルトでは65536バイト)を調べ、それがtextbinaryかを判断した上、ファイルをディポに保存します。

デフォルトでは、テキストファイルのリビジョンはリバースデルタ形式で保存され、構成可能変数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の基本ファイルタイプは、次のとおりです

キーワード

解説

注釈

サーバ記憶

text

テキストファイル

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

RCS形式のデルタ

binary

非テキストファイル

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

フルファイル、圧縮

symlink

シンボリックリンク

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

RCS形式のデルタ

apple

マルチフォークMacファイル

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

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

フルファイル圧縮、AppleSingle形式

resource

Macリソースフォーク

Perforce 99.1以前におけるMacリソースフォークの唯一のファイルタイプ。サポートは続けていますが、appleファイルタイプの使用がより適切です。

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

フルファイル、圧縮

unicode

Unicodeファイル

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

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

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

UTF-8形式のRCSデルタ

utf16

Unicodeファイル

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

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

UTF-8形式のRCSデルタ

ファイルタイプ修飾子

ファイルタイプ修飾子は、次のようになっています。

修飾子

解説

注釈

+w

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

+x

クライアントで実行権を付与します。

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

+ko

旧式のキーワード拡張

$Id$$Header$キーワードのみを拡張します。

この修飾子は本来、Perforceの2000.1より前のバージョンとの下位互換性を保つためのもので、Perforceの旧バージョンの+k (ktext)修飾子に対応しています。

+k

RCSキーワード拡張

RCS (Revision Control System: リビジョン管理システム)キーワードを拡張します。

RCSキーワードは大文字と小文字を区別します。

ファイルの中でキーワードを使用するときは、キーワードの後のコロン(例えば、$Id:$)は省略可能です。

UTCキーワードは、グローバルに分散されたインストール環境でイベントを記述するのに適しています。

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

  • $Id$

  • $Header$

  • $Date$サブミットの日付

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

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

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

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

  • $Change$

  • $File$

  • $Revision$

  • $Author$

+l

排他的な作業状態にする(ロック)

設定すると、ファイルを編集のための作業状態にできるのは、同時に1人だけになります。

複数の開発者による変更をマージしても意味をなさないバイナリファイルタイプ(例えば図表)に対して有効です。

+C

Perforceは、各ファイルリビジョンの完全圧縮バージョンを格納します。

binaryファイル、および10MBを超える新規追加のtextunicodeutf16ファイルに対するデフォルトの格納機構。

+D

Perforceは、デルタをRCS形式で格納します。

textファイルに対するデフォルトの格納機構。

+F

Perforceは、リビジョンごとにフルファイルを、圧縮せずに格納します。

サイズが大きいバイナリファイルや、PostScriptファイルのようにユーザがテキストと読み取れない長いASCIIファイルに対して有効です。

+S

最新リビジョンだけが格納されます。

新しいリビジョンがサブミットされると、古いリビジョンはディポから消去されます。実行ファイルまたは.objファイルに対して有効です。

+Sn

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

新しいリビジョンをn個を超えてサブミットするか、既存の+Snファイルのnを現在のリビジョン数より少ない値に変更すると、古いリビジョンはディポから消去されます。古いリビジョンには反映されません。詳細については、「使用上の留意点」を参照してください。)

+m

オリジナルの修正時刻を保存します。

ファイルのローカルファイルシステム上のタイムスタンプが、サブミットのときに保存、同期のときにリストアされます。Windows環境におけるサードパーティ製のDLLに対して有効です。

+X

アーカイブトリガを必要とします。

Perforceサービスはファイルへのアクセスのためにarchiveトリガを実行します。詳しくは、『Perforceサーバ管理者ガイド:基本』を参照してください。

ファイルタイプは通常リビジョン間で保持されますが、addedit、またはreopen操作中に-tオプションでオーバーライドや変更することができます。

  • p4 add -t filetype filespecは、指定したファイルタイプでファイルを追加します。

  • p4 edit -t filetype filespecは、指定したファイルタイプで、ファイルをeditのための作業状態にします。ファイルタイプは、ディポにサブミットしたときに指定したfiletypeに変わります。

  • p4 reopen -t filetype filespecは、すでにaddeditのための作業状態になっているファイルのタイプを変更します。

引数filetypeは、[basetype] +modifiersのように指定します。例えば、script.shのタイプを実行ファイルテキストに変更し、RCSキーワード拡張を行うには、p4 edit -t text+kx script.shを使用します。

部分ファイルタイプも使用することができます。例えば既存のtextファイルをtext+xに変更したい場合、p4 reopen -t +x script.shとします。多くの部分ファイルタイプ修飾子は、ファイルタイプに付加するものですが、格納修飾子(+C+D+F)を使うとファイルの格納形式が変更されます。修飾子を消去したい場合はフルファイルタイプを指定しなければなりません。

一般的なファイル拡張子に対するPerforceのファイルタイプ

以下の表に、一般的なファイル拡張子と、それに対応するPerforceのファイルタイプおよび修飾子を示します。

ファイルタイプ

Perforceファイルタイプ

解説

.asp

text

アクティブサーバページファイル

.avi

binary+F

Windowsビデオファイル

.bmp

binary

Windowsビットマップファイル

.btr

binary

Btrieveデータベースファイル

.cnf

text

カンファレンスリンクファイル

.css

text

カスケードスタイルシートファイル

.doc

binary

Microsoft Wordドキュメント

.dot

binary

Microsoft Wordテンプレート

.exp

binary+w

エクスポートファイル(Microsoft Visual C++)

.gif

binary+F

GIF画像ファイル

.gz

binary+F

Gzip圧縮ファイル

.htm

text

HTMLファイル

.html

text

HTMLファイル

.ico

binary

アイコンファイル

.inc

text

アクティブサーバインクルードファイル

.ini

text+w

アプリケーション初期設定ファイル

.jpg

binary

JPEG画像ファイル

.js

text

Javaスクリプト言語ソースコードファイル

.lib

binary+w

ライブラリファイル(複数のプログラミング言語)

.log

text+w

ログファイル

.mpg

binary+F

MPEGビデオファイル

.pdf

binary

Adobe PDFファイル

.pdm

text+w

Sybase Power Designerファイル

.ppt

binary

Microsoft PowerPointファイル

.xls

binary

Microsoft Excelファイル

Perforceのファイルタイプとファイル名とのマッピングについての詳細は、p4 typemapコマンドをご覧ください。

キーワード拡張

RCSキーワードは、次のように拡張されます。

キーワード

拡張先

$Id$

ディポシンタックス内のファイル名とリビジョン番号

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

$Header$

$Id$と同じ

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

$Date$

最後のサブミットの日付を、YYYY/MM/DD形式で表したもの

$Date: 2010/08/18 $

$DateTime$

最後のサブミットの日付と時刻を、YYYY/MM/DD hh:mm:ss形式で表したもの

日付と時刻は、サブミット時のPerforceサービスにおけるローカルタイムで記録されます。

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

$Change$

ファイルがサブミットされたPerforceチェンジリスト番号

$Change: 439 $

$File$

ディポシンタックスで表記されたファイル名のみ(リビジョン番号なし)

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

$Revision$

Perforceリビジョン番号

$Revision: #3 $

$Author$

ファイルをサブミットしているPerforceユーザ

$Author: edk $

使用上の留意点

  • すでに存在するファイルのタイプは、p4 openedp4 filesで判断できます。

  • デルタ記憶(textファイルのデフォルト方式)は、ファイルのリビジョン間の差分(つまり、デルタ)だけを保存する方法です。フルファイル記憶(binaryファイルでのデフォルト方式)は、ファイル全体を保存します。ファイルタイプにより、フルファイル記憶とデルタ記憶のどちらを使用するかが決まります。Perforceは、デルタ記憶にRCS形式を使用します。

  • ファイルタイプによっては、ディポ内に保存するためにgzip形式に圧縮されます。圧縮はサブミットのプロセス中に行われ、解凍は同期中に行われます。プロセスはユーザに対して透過的です。

  • 非UNIXクライアントワークスペース上のシンボリックリンクは、リンク先のファイルへの相対パスを含む小さなテキストファイルとして表示されます。非UNIXクライアントでこれらのファイルを編集するときは注意してください。これらのファイルをディポにサブミットすると、シンボリックリンクがUNIXクライアントワークスペース上に存在しないファイルを指示することになる場合があるからです。

  • ファイルタイプを変更しても、ディポに保存された以前のリビジョンには影響しません。

    例えば、+Sn(一時オブジェクト)修飾子を追加することによりファイルタイプを変更することは、ディポ内のファイルの最新n個のリビジョンのみを保存するようPerforceに通知したことになります。既存のファイルを一時オブジェクトに変更した場合、それ以降(n番目より後)は古くなった最新リビジョンが消去されるようになりますが、+Sn修飾子を追加するのリビジョンについては影響を受けません。(+Sn修飾子を追加したの最新でないリビジョンを同期しようとすると、そのファイルはクライアントワークスペースから削除されます。このようなリビジョンは、p4 filelogの出力においてpurge操作として表示されます。)

  • 一時オブジェクトファイル(+Sおよび+Sn)に対してp4 integrateを実行すると、遅延コピーは作成されません。反映されたtempobjファイルは共有バージョン化サービス上で追加のディスクスペースを消費します。

  • 修正時刻(+m)修飾子は特殊な事例であり、ファイルのオリジナルのタイムスタンプを保持したい開発者が使用するものです。

    クライアントワークスペースでmodtimeオプションが使用されると、ファイル日付がリビジョンごとに進むことは保証されません。例えば、ファイルがコピーされて反映されると(「theirsを承諾」)、ファイルには反映元ファイルのタイムスタンプが採用されます。ユーザが古い日付のファイルをチェックインすると、クライアントワークスペースのファイルにはそれと同じ古い日付が使われます。通常、Perforceはファイルを同期させるときにタイムスタンプを更新します。modtimeオプションにより、p4 sync後のクライアントワークスペースにあるファイルのタイムスタンプを、確実にサブミット時のファイルにあるオリジナルのタイムスタンプに戻すことができます。(つまり、サブミット時のPerforceバージョン化サービスでの時刻でもなく、同期時のユーザのワークステーションでの時刻でもありません。)

    この修飾子が有効になる典型的な事例は、Windows環境によくあるサードパーティ製DLLを含む開発です。こうしたファイルのタイムスタンプは、通常(開発環境内やOSによって)バージョン情報の代わりとして使用されるため、Perforceユーザのクライアント設定にかかわらず、時々ファイルのオリジナルのタイムスタンプを保持する必要があります。

    ファイルの+m修飾子は次のような状況を引き起こします。+m修飾子が設定されている場合、Perforceはファイルを同期するときにクライアントワークスペースのmodtime(“サブミット時のファイルのタイムスタンプ”)またはnomodtime(“同期時のクライアントでの日付と時刻”)オプション設定を無視し、常にサブミット時のファイルのオリジナルのタイムスタンプをリストアします。

  • Perforceの99.1より前のバージョンでは、一連のキーワードを使用してファイルタイプを指定していました。以下の表は、旧キーワードとそれに対応する現在の基本ファイルタイプおよび修飾子とをリストにしたものです。

    旧キーワード

    解説

    基本ファイルタイプ

    修飾子

    text

    テキストファイル

    text

    なし

    xtext

    実行可能なテキストファイル

    text

    +x

    ktext

    RCSキーワード拡張を行ったテキストファイル

    text

    +k

    kxtext

    RCSキーワード拡張を行った実行可能なテキストファイル

    text

    +kx

    binary

    非テキストファイル

    binary

    なし

    xbinary

    実行可能なバイナリファイル

    binary

    +x

    ctext

    圧縮されたテキストファイル

    text

    +C

    cxtext

    圧縮された実行可能なテキストファイル

    text

    +Cx

    symlink

    シンボリックリンク

    symlink

    なし

    resource

    Macリソースフォーク

    resource

    なし

    uresource

    圧縮されていないMacリソースフォーク

    resource

    +F

    ltext

    長いテキストファイル

    text

    +F

    xltext

    実行可能な長いテキストファイル

    text

    +Fx

    ubinary

    圧縮されていないバイナリファイル

    binary

    +F

    uxbinary

    圧縮されていない実行可能なバイナリファイル

    binary

    +Fx

    tempobj

    一時オブジェクト

    binary

    +FSw

    ctempobj

    圧縮された一時オブジェクト

    binary

    +Sw

    xtempobj

    実行可能な一時オブジェクト

    binary

    +FSwx

    xunicode

    実行可能なUnicodeファイル

    unicode

    +x

    xutf16

    実行可能なUTF-16ファイル

    utf16

    +x