<<2009/01/21 更新>> PERFORCE コマンドライン・クライアント P4 PERFORCEサーバ P4D リリースノート(2008.1) はじめに -------- このドキュメントでは、PERFORCE 2008.1 における PERFORCE サーバ(P4D)とクライ アント(P4)の新機能について説明します。 P4Merge、P4SCC、P4V、P4Web、P4WinおよびP4WinMergeのリリースノート、なら びに補足となるプラットフォーム固有の注意事項および国際化に関する注意事項 は、PERFORCEドキュメントのWebページに別途掲載されています。 PERFORCE のリリースは YYYY.R/CCCCC(例:2002.1/30547)という形式で表され、 YYYY は年、R はその年の中のリリース番号、CCCCC はバグ修正レベルでの変更 を示します。これらのリリースノートにおけるそれぞれのバグ修正は、チェン ジ番号で示されています。いずれのリリースも、(1) 以前のリリースからのバ グ修正と (2) 現在のリリースにおけるバグ修正を含みます。 「p4」や「p4d」のバージョン情報を調べる場合は、「-V」オプションを指定し てこれらのコマンドを実行します。また、「p4 info」コマンドを実行すること で、サーバ情報を調べることができます。 サーバをアップグレードする ------------------------------------------ 2008.1 サーバをダウングレードすることはできません 'p4d -xu' コマンドによって、重要なスキーマのアップグレードが実行され ます。'p4d -xu' コマンドは一般的に、チェンジリストの数が 1000 以上の 場合に必要となります。サーバ内のチェンジリストの数が 1000 未満の場合、 新しいサーバが起動されたときに、スキーマが自動的にアップグレードされ ます。 アップグレードの前に PERFORCE サーバをアップグレードするには、PERFORCE のライセンス・ファ イルが有効でなければなりません。失効したライセンスでは、アップグレー ドしたサーバを起動できません。 通常のチェックポイント生成手順とは別に、アップグレードを実施する前に はチェックポイントを作成してください。アップグレード直前の最新情報を、 チェックポイントの中に確実に含めるためには、PERFORCE サーバを停止させ、 'p4d -r -J -jc' コマンドでチェックポイン トを作成します。 'p4d -xu' コマンドによる主要なスキーマのアップグレードには、十分なデ ィスク容量が必要です。具体的には、db.* が存在するファイルシステム内に、 アップグレードされるテーブルと同じサイズの空き容量が必要であり、さら に journal が存在するファイルシステム内に、アップグレードされるテーブ ルの 2倍の空き容量が必要です。 リリースごとの「アップグレードされるテーブル」は、次のとおりです。: 2008.1: db.change 2007.3: db.archmap db.archive 置換テーブルの(再)構築 2007.3: db.view   haveMapエントリの(再)構築 2005.2: db.revsx ('スペック' ディポ・エントリ専用のテーブル) 2005.2: db.revdx (新規のテーブル)  2005.1: db.locks, db.revhx (新規のテーブル) 2003.2: db.user 2003.1: db.depot 2002.2: db.rev, db.working (tempobj エントリのみ) 2002.1: db.changes 2001.1: db.integ, db.have スキーマのアップグレードは、リリースを通して累積されます。例えば、 2003.2 から 2008.1 にアップグレードする場合、db.locks、db.view、  db.change および新規のテーブル db.revhx、db.revdx、db.revsx、db.archmap が'p4d -xu'コマンドの実行によりアップグレード / 生成されます。 97.3 より以前のリリースからアップグレードする場合は、このファイルの最 後にあるアップグレード・ノートをご覧ください。 アップグレード UNIX プラットフォーム 既存の PERFORCE サーバに 1000個未満のチェンジリストしか存在していない か、もしくはアップグレード中に重要なスキーマのアップグレードを要求さ れなかった場合には、単に使用中の p4d のバイナリを 新しい p4d に置 き換え、普段指定しているパラメタで再起動するだけです。PERFORCE サーバ は、スキーマを自動的にアップグレードします。 既存の PERFORCE サーバに 1000個以上のチェンジリストが存在し、かつアッ プグレード中に重要なスキーマのアップグレードを要求された場合には、次 の手順となります。: 1. 使用中の p4d のバイナリを、2008.1 の p4d に置き換えます。 2. 'p4d -r -J -xu' コマンドを実行します。 このコマンドは、重要なスキーマのアップグレードを実施し、そして終了 します。 3. 普段指定しているパラメタで、PERFORCE サーバを再起動します。 Windows プラットフォーム 既存の PERFORCE サーバに 1000個未満のチェンジリストしか存在していない か、もしくはアップグレード中に重要なスキーマのアップグレードを要求さ れなかった場合には、単に新しい PERFORCE のインストーラ(日本語版の場 合は、perf411.exe)を実行するだけです。これにより、PERFORCE サーバの サービスは再起動し、スキーマを自動的にアップグレードします。 既存の PERFORCE サーバに 1000個以上のチェンジリストが存在し、かつアッ プグレード中に重要なスキーマのアップグレードを要求された場合には、次 の手順となります。: 1. 2008.1 のインストーラ perforce_jp.exe を実行します。このインストー ラによって p4d.exe と p4s.exe は置き換えられますが、重要なスキーマ のアップグレードが要求されている場合には、PERFORCE サーバのサービ スは再起動されません。 2. コマンドプロンプトから、'p4d -r -J -xu' コマンドを実行します。このコマンドは、重要なスキーマのアップグレー ドを実施し、そして終了します。 3. PERFORCE サーバの Windows サービスを再起動します。 アップグレードの後で 2002.1 のジョブ検索は、英字の句読記号(「.」「,」「:」「;」など)を含 む検索をサポートします。この機能を有効にするためには、'p4 jobs -R' コ マンドで以前のジョブのインデックスを作成し直す必要があります。 以前のリリースとの互換性 ------------------------ 1. 特に指示がない限り、どのリリースの PERFORCE サーバに対してであっても、 すべての PERFORCE クライアントを混在させることができます。ただし、 2008.1 の新機能を使うには、サーバおよび(または)クライアントのアップ グレードが必要です。次のマークをご参照ください。 * -- 新しい p4 クライアント・プログラムが必要 ** -- 新しい p4d サーバ・プログラムが必要 *** -- 新しい p4p プロキシ・プログラムが必要 2. 99.2 以降では、リモート・ディポの機能は、UNIX と NT との間で互換があ ります。98.2 以降では、リリースをまたがった互換をサポートします(た だし、98.2 以降どうしのみ)。98.1 以前では、同じリリース同士でしか、 リモート・ディポの機能をサポートしません。 3. 2005.1 以降、98.2 と 99.1 のリモートディポをサポートしなくなりました。 98.2 や 99.1 から 2005.1 サーバへ接続することは可能ですが、ディポには ファイルが存在しないように見えます。 日本語版PERFORCEでは未サポートのアプリケーション ------------------------------------------------ 英語版 PERFORCE でサポートしている以下のアプリケーションについて、現時 点で、日本語版では未サポートとなっております。日本語版でのサポートが決 定しましたらご連絡致しますので、どうぞご了承ください。 - P4EXP - P4FTP - P4GT - P4OFC - P4Report - P4Web - P4WSAD -------------------------------------------------------------------------- -------------------------------------------------------------------------- リリース 2008.1 2008.1の主な新機能 ------------------ パフォーマンスの改善 - #135973, #149641, #148921 ** 1) サーバ・ロックの取得   データベース・テーブルのロック処理のアルゴリズムが、割り込みを回避する   ように変更されました。'p4 client -d'などのいくつかのコマンドでは、多数   のテーブル群を書き込み用にロックする必要があります。以前のサーバ・バー   ジョンでは、ブロック形式でロックを取得していました。この新しいアルゴリ   ズムでは、別のコマンドがブロックを引き起こすロックを保持している場合、   以前に取得したロックを解放します。この形式で必要なロックの取得を試行し   て3回失敗すると、コマンドはブロック・モードで代替処理を行います。 2) 接続プロトコル * ***   クライアント、プロキシおよびサーバでのPERFORCEプロセス間のTCP接続におい   て、ネットワーク・バッファリングのレベルが検出され、当該バッファの空間が   有効に利用されるようになりました。特に、プロキシとサーバの距離が長い接続   でのパフォーマンスが改善されています。 3) プロキシの圧縮 ***   プロキシが使用中である場合、バイナリ・ファイルの解凍はサーバではなくクラ   イアントで実行できます。サーバと新しいプロキシの両方が必要です。   (Bug #16398, #28490) コマンドの改善 - #138839, #145664, #144624, #149074 ** 1) 'p4 fstat'   'p4 fstat' が最適化され、メモリ割り当て量の削減およびパフォーマンスの改善   が図られました。この最適化により、メモリ使用量は40%減少し、計算フェーズが   30%高速化しています。 2) 'p4 changes'   'p4 changes -m max ' による最適化が当リリースで改善されています。   このコマンドのパフォーマンスがファイルパスの深さや指定された変更の数に依存   する度合は低くなりました。新しいアルゴリズムではdb.changesテーブル内のフィ   ールドが利用され、このフィールドはサブミット時または(既存の変更については)   2008.1へのアップグレードにより計算されます。  (Bug #9314, #28223, #26563) 3) 'p4 integrate'   'p4 integrate'が(さらに)高速化され、特に反映元と反映先の間に多くの反映   履歴がある場合に速くなりました。   (Bug #27706) 4) 'p4 obliterate'   'p4 obliterate' が高速化され、特に大容量のdb.archmapテーブルを含むレポジト   リで多くのファイルを完全消去する際に著しく速くなりました。(エントリが100,   000件を超えるdb.archmapにおいて試験を行いました。) (Bug #28452) 新しいadminコマンド - #137848 **  新しいコマンドである'p4 admin lockstat'は、各データベース・テーブルについて  読み取りロックまたは書き込みロックのステータスを報告します。 2008.1のその他の新機能 ----------------------- #152278 **  'p4 protect'ではパーミッションの「権限」の指定が可能になりました。  以前は'p4 protect'では指定されたアクセス('read'など)と、その下にあるすべ  てのパーミッション('read'の場合は'read' + 'list')を含むパーミッション・  レベルだけが使用可能でした。パーミッションの権限を利用すれば、下位の権限を  再度付与することなく個々のユーザの権限を拒否することが可能です。  新しいパーミッション権限は、'=read'、'=branch'、'=open'および'=write'です。  この機能は以前は文書化されていませんでしたが、2008.1で完全にサポートされる  ようになりました。 #151491 **  'p4 group'のフィールドであるMaxScanRows、MaxResults、MaxLockTimeおよび  Timeoutでは、'unlimited'という値を使用することにより、ユーザの他のグループ  に課されている制限とは無関係に、パラメータを無制限として指定することが可能  になりました。'unset'という値は無制限とする指定に使用されますが、この値は  ユーザが属する他のグループにより課されているパラメータに対する、他の制限の  影響を受けます。このサーバの古いグループ仕様では、'unlimited'の値が'unset'  に置き換えられ、すべてのグループのメンバーは以前と同じ動作を示すはずです。  同様に、Timeout値'0'は'unset'に置き換えられ、このフィールドに対しては'0'  というTimeout値が許容されなくなります('unset'を使用してください)。 (Bug #2362, #18057, #19935) #150806 **  'p4 labels/clients/branches'の新しいオプション'-e nameFilter'により、ユー  ザはワイルドカードを使用してクエリを制限することができます。このオプション  は、これらの領域のデータ量が大きいサイトでは非常に有効です。(Bug #6554) 例: p4 labels -e "*sep*2000*" //depot/main/releases/... #146787 **  'p4 triggers'では、'p4 triggers'に対するトリガを作成可能になりました。以前  は、問題を回避するためにトリガは意図的に排除されていました。'p4 triggers'  コマンドの動作を妨げるような破壊されたトリガがインストールされた場合、唯一  の対処法はdb.triggersファイルをサーバ・ルート・ディレクトリから削除するか、  リネームすることです。(Bug #26473) #146678 **  'p4 jobspec' では、'p4 fix'および'p4 change'により作成された修正に対して  デフォルトのステータスを指定できるようになりました。(以前は"closed"として  固定されていました。)このデフォルト・ステータスはジョブ仕様のStatusフィー  ルドに対するPresetの値として与えられ、任意指定の2番目の値には"fix/"という  文字列が前に付けられます。例えば、"Status open,fix/fixed" とすると、ジョブ・  ステータスのデフォルト値は"open"、修正ステータスは"fixed"となります。関連す  る変更がサブミットされると、ジョブ・ステータスが修正ステータスに置き換えら  れます。新しい特殊な修正ステータスの"same"は、既存のジョブ・ステータスをそ  のままの状態で残します。(Bug #9471) #146676 **  'p4 fix'および'p4 fixes'では、修正に関連するジョブ・ステータスをすべての  場合に報告するようになりました。以前は、ステータスが"closed"である場合に  はステータスが抑止されていました。 #141168 **  'p4 info'によりPERFORCEサーバの稼働時間が報告されるようになりました。 (Bug #1340) #140525 **  内部キャッシュの効果を利用した更新のバッチ処理化とロック要求の削減により、  'p4 revert' のパフォーマンスが改善されました。(Bug #27198) #140369 **  change-commitトリガでは、新しいスクリプト変数のoldchangelistを使用して  事前コミットのチェンジリスト番号を報告するようになりました。  (Bug #27287) #138643 ** 'p4 counter' によって管理されるカウンタには、数字だけでなく任意の文字列が 使用可能になりました。(Bug #6096) #137438 **  サブミットの完了後、ktextファイルのダイジェストおよびサイズを再計算する必  要があります。以前はdb.revテーブルとdb.revhxテーブルの更新はファイルごとに 別々に行われていましたが、これらの更新処理がバッチ化されました。この変更に  よってロック要求が少なくなり、サブミットに要する総所要時間の改善が図られて  います。 #139128 **  'p4 fstat' に2つの新しいオプションが追加されました。'-S'オプションは、出力  に異なるソート順序を要求するために使用されます。'-r'オプションは出力の順序  を逆にします。詳しくは、'p4 help fstat'を参照してください。 (Bug #26301) #134117 **  新しいサーバ識別起動オプション: p4d -In   サーバに対して固有の識別可能な名前を指定します。   この名前は'p4 -ztag info'の出力で確認できます。  p4d -Id   サーバに対して識別可能なコメントを指定します。   このコメントは'p4 -ztag info'の出力で確認できます。 2008.1/156517 (beta)以降のバグ修正 ----------------------------------- #175236 ** プロキシの使用中、バイナリ・ファイルに対し'-o'オプションを付けずに 'p4 print'を実行すると、圧縮された形式で出力され、1行の中に2回出力される ことがありました。本件は修正されました。(Bug #31596) #174121 **  'p4 monitor'に'-a'オプションまたは'-ae'オプションを指定すると、PERFORCE  サーバがクラッシュすることがありました(Windows環境のみ)。本件は修正さ  れました。(Bug #31547) #171545 **  'p4 integrate'の仕様変更により、あるブランチからコピーされてそのブランチ  に書き戻された変更が、他のブランチへの再反映の対象として見なされるように  なります。これにより、強制的な反映処理後のブランチの同期が容易になります  が、状況によってはさらに別の反映をスケジューリングしなければなりません。  (Bug #29148) #164374 **  ファイルのうち1つが不正変更され、それがユーザに報告されていた場合でも、  'p4 submit -t'によりチェンジリストがサブミットされていました。本件は修正  されました。(Bug #30569) #164029 **  何千個ものファイルに対して 'p4 -x' を使用したとき、より一般的なPERFORCE  の操作のために行われた最適化が原因で処理時間が長くなっていました。この最  適化は単一のファイルの操作においては逆効果になっていました。本件は修正さ  れました。(Bug #30616) #161164 **  'p4 admin lockstat' をタグ付き出力を使用して別のコマンドと一緒に使用する  と、プロトコル・エラーが発生し、p4vにおいて(また他のクライアント・アプリ  ケーションでも)誤った結果が生成されていました。本件は修正されました。  (Bug #30289) #160022 **  tcpバッファの新しい計算が、いくつかのプラットフォームにおいて過度に集中的  に処理されることがありました(クライアント/サーバ間の通信でデッドロックが  発生)。この現象が発生しないようにアルゴリズムが調整されました。  (Bug #29974) #158746 **  変更#153657により、'p4 integ'が過剰にdb.integedテーブルをスキャンすること  があるという退行が生じていました。本件は修正されました。(Bug #29943) #156864 **  一時ファイルの'p4 integrate'を実行後、サブミットする前に'p4 resolve -at'を  同じ反映先ファイルに複数回実行すると、最後の衝突解決がサブミットされず、最  初に解決されたファイルがサブミットされていました。本件は修正されました。  (Bug #29811) #156771 **  カンマはブランチ、クライアント、ディポ、またはラベル名の一部として許容され  なくなりました。名前にカンマが含まれている既存のエンティティには依然として  アクセス可能ですが、名前にカンマを含むクライアント、ブランチ、ディポまたは  ラベルを新規に作成できません。(Bug #12510) 2008.1のバグ修正 ---------------- #154569 **  'p4 user -f' または 'p4 user -f -i' では、ユーザ名をすべて数値とした新規  ユーザの作成が可能でした。本件は意図されるとおりの動作として、すべて数値で  あるユーザ名が作成できないように修正されました。(Bug #29250) #153657 **  'p4 integrate'の機能が調整され、リビジョンが反映された時点とそれが同じファ  イルに戻された時点が検出されるようになり、元のリビジョンが既に反映されてい  る場合には、後のリビジョンについての別のファイルへの反映が抑止されるように  なりました。 (Bug #20413, #29176) #152854 **  プロキシは、複数の場所にある別々のローカル・ディポ間で怠惰なコピーが作られ  たリビジョンを格納していました。本件は修正されました。(Bug #28635) #149573 **  'p4 change -u'では、ユーザ名とユーザのワークスペースの両方がサブミット済み  チェンジの所有者のものと一致することを要求しなくなりました。現バージョンで  はユーザ名のみ一致する必要があります。 (Bug #25380, #28412) #149297 *  'p4 set'ではP4POPTIONS変数が報告されるようになりました。 (Bug #22108) #149109 **  'p4 client'でクライアント仕様フォームを編集すると、'LineEnd'または  'SubmitOptions'の値がデフォルト値にリセットされることがありました。  この問題は、'Options'フィールドが他の2つのフィールドのどちらかより後に  (通常はAPI経由で)処理された場合にのみ発生していました。(Bug #28605) #147069 **  'p4 obliterate'により、アーカイブファイルが英数字順ではなく番号順に消去され  るようになりました。正しい昇順によるRCSリビジョンの消去はかなり高速になって  います。(Bug #25357) #146485 **  p4dは、順序が狂ったファイルのリカバリのためにスキップされたジャーナル・ファ  イルについて、ゼロでないイグジット・ステータスおよびエラーメッセージの概要  を報告するようになりました。(Bug #13892) #146472 *  Windowsプラットフォームで'p4 set'を実行すると、P4CHARSETがshiftjisに設定さ  れている場合に正しいP4CONFIGファイルが検出されないことがありました。本件は  解決しました。(Bug #26042) #144699 **  削除済みリビジョンに対し、タグ付けされたプロトコルを使用して'p4 sync'を実行  したとき、概要データに誤ったファイル・サイズを報告することがなくなりました。 (Bug #27493) #142417 **  'p4 integrate'および'p4 diff2'によって、出力のない理由の説明として紛らわし  いエラーメッセージが生成されることがありました。最も一般的なメッセージは、  「クライアントビューとブランチビューの両方に反映先ファイルがありません」で  した。このメッセージはいくつかのより具体的なエラーメッセージに拡張され、正  しい引数(反映元ファイルまたは反映先ファイル)がエラーメッセージと共に表示  されるようになりました。(Bug #452, #2061, #6339, #10563, #20914) #142061 **  'p4 protect'にマッピングされていないアクセス行しか記述されていないユーザ  (例:'list user * * -//...')がライセンスを消費し続けることがありました。  そのようなユーザには、アクセス権が全くない場合と同じ応答(「ユーザ'xxx'の  アクセス権は'p4 protect'により有効にされていません。」)が示されるようにな  りました。 #141985 **  diff、diff2、describe、annotateおよびresolveの各コマンドに対する'p4 help'が  更新され、-dおよび-sの比較オプションの使用方法と動作が明確化さ  れました。また、サーバの使用量に関するメッセージも更新されました。  (Bug #26279, #23447, #22998, #18164, #16797, #13491, #26793) #141042 **  ユーザは、元に戻すファイルに対して少なくとも"list"権限を持っていれば、自分の  ファイルを元に戻すことできるようになりました。以前は'p4 revert'によりファイ  ルを元に戻すには、少なくとも"open"権限が必要でした。 (Bug #3539, #5899) -------------------------------------------------------------------------- -------------------------------------------------------------------------- リリース 2007.3 2007.3 の主な新機能 ------------------- グループの所有者を指定する機能 - #1591, #9600 ** 'p4 group'に新しく'Owner'フィールドが追加されました。これはSUPER権限を 持たずにグループ仕様の変更が可能であるユーザを指定するために使用されます。 所有者は新しい'p4 group -a'コマンドにより、グループの変更または削除をも 実行可能です。所有者は自身が所有しているグループのメンバーですが、さらに グループを管理する権限も持ちます。 パフォーマンスの改善 - #122007, #124181, #124726, #128272 ** 'p4 integrate'によるロックの変更 非常に長く複雑な反映計算サイクルの間の並行処理を改善するために、データベー ス検索機能が変更されました。新しいアルゴリズムでは、db.working、db.have、 db.locks、およびdb.resolveの各テーブルで早期にロックを開放できます。 "update"コマンドが待機しなければならない時間が大幅に削減されたほか、ブランチ 処理全体の所要時間が25%ほど短縮されました。 'p4 submit'によるロックの変更 前バージョンにおける'p4 submit'のコミット・フェーズの改訂では、多くのコマン ドで並行処理が改善されました。本バージョンではこの改善がdb.countersテーブル を利用するコマンドにも拡張されました。例えば'p4 change'では、大規模なブラン チのサブミット処理における最初の(かつ最長の)コミット・フェーズの間に並行 処理が可能です。 'p4 sync'によるロックの変更 syncコマンドは、計算フェーズの処理中にdb.resolveテーブルへのアクセスを 必要とするコマンドを妨げることが少なくなるように変更されました。 これにより、'p4 revert'のようなコマンドがこの間に動作することが可能です。 また、初回の同期処理または'p4 sync -p'処理においてdb.haveテーブルが読み取り 用にロックされることがなくなり、その結果、このテーブルに対する並行した同期 更新アクセスが可能になりました。 'p4 labels'によるロックの変更 'p4 labels'をファイル引数と共に使用すると、すべてのファイルのdb.revデータを キャッシュしようと試み、db.revテーブルのロックを早期に解放できるようにしま す。非常に多くのラベルを持つサイトで'p4 labels 'を実行しても、 サーバを占有することがなくなり、待機しなければならないコマンドは 'p4 labelsync'だけになりました。 キャッシュ管理の変更 ディスク・ページのキャッシュが変更されました。テーブルのロックが解放される 際に過剰なページ数を同時に書き込まないようにするため、ページがより早く書き 込まれるようになりました。また、メタデータのキャッシュ・システムによって、 メモリとCPUの使用量が削減されます。 TCPバッファリングが変更されました。 PERFORCEのクライアント、サーバ、およびプロキシでは、TCP送信/受信バッファ の大きさが32KBに満たない場合、32KBまで増大させようと試みます。これにより、 高遅延型ネットワークでのネットワーク・パフォーマンスを向上させることがで きます。 2007.3 のその他の新機能 ------------------------- #132766 ** 'p4 sync' および'p4 integ'を大容量のデータセットおよび大容量のプロテクショ  ン・テーブルで実行する場合、消費するCPUの容量が以前よりも少なくなりました。  (Bug #6964) #132360 **  いくつかの異常なケースにおいて、保護が正しく行われるようになりました。  'p4 dirs -H'、'p4 have'、'p4 labelsync'、および 'p4 opened'では、'list'アク  セスが必要になりました。 #130733 **  'p4 users [user]'と同様に、'p4 groups -v [group]'により指定されたグループ  のサマリ・データが提供されます。(Bug #25273) #130372 **  トリガの標準出力が、失敗時と同様に成功時にもクライアントに渡されるようにな  りました。以前と同様、トリガの失敗時には標準出力が埋め込まれた状態でエラー  がクライアントに送られます。現バージョンでは、トリガの成功時にはメッセージ  が簡素な形式でクライアントの標準出力に送られます。以前はトリガの成功時には  出力が破棄されていました。ユーザは、'p4 -Zapi=61 'によって"api"  プロトコル・レベルを61以下に設定することにより、古い動作を強制的に実行させ  ることができます。(Bug #7546) #129728 **  'p4d -jc'および'p4d -jj'では、データベース・ファイルには読み取りロックのみ  を保持するようになり、サーバでの読み取り処理が継続されるようになりました。  db.countersファイルは、更新時に依然としてロックされます。 #129045 ** ***  ファイルがプロキシを通してサブミットされるとき、プロキシはファイルをキャッ  シュするようになりました。MD5署名に基づいた新しいキャッシュ検証システムが 使用されています。新しいプロキシが古いサーバで稼動している場合、古いタイム  スタンプ検証が使用されます。p4dサーバがMD5署名を保持していないリビジョンに  対しては、プロキシはキャッシュを検証しないため、"p4 verify"を実行し、p4d  サーバが計算済みのMD5署名を確実に保持するようにしてください。(Bug #10866) #127926 **  'p4 filelog'において'-h'オプションが使用可能になりました。このオプションに  より、ユーザは「ブランチ元」や「コピー元」の反映履歴をたどることが可能にな  りました。詳しくは'p4 help filelog'を参照してください。(Bug #24825) #125001 **  'p4d -jc'または'p4d -jj'によるジャーナルの交替は、UNIX上での瞬時のリネーム (コピーではなく)になりました。-zオプション(圧縮チェックポイント/ジャーナル)  では、依然としてコピーされます。(Bug #21537、#24909) #124026 **  'p4 protect'のエントリでは、IPアドレス指定のためにCIDR構文の使用が可能に  なりました。例えば、"172.16.0.0/16"は172.16で始まるすべてのIPv4アドレスと  一致します。CIDR表記法では、プロキシ・マッチングを可能または不可能にするた  めに最初以外の場所でワイルドカードを結合することはできません。(Bug #3372) #129897 **  'p4 change'では、作業状態のファイルがない場合にユーザが作業中チェンジリスト  のクライアントを変更できるようになりました。(Bug #25366) 2007.3/140672(初回リリース)以降のバグ修正 ------------------------------------------- #152382 **  'p4 integrate'が反映すべきリビジョンをピックアップする際に遠隔のベースを検  索することがありました。現在は'p4 integrate'はリビジョンの選択時に、反映対  象となる最初のリビジョンの前のリビジョンをベースとすることを要求するように  なりました。  (Bug #29016) #152296 **  'p4 submit'では、クライアントにマッピングされたファイルとプロテクション・  テーブルとの組み合わせが内部的な制限を超えると「サブミット対象のファイル  がありません」と報告することがありました。大文字/小文字を区別しないサーバ  (Windows)では、生成されたマップで値が繰り返されるために誤ってこの制限に  到達していました。本件は修正されました。(Bug #28853) #149704 **  'p4 integrate'において、大きいプロテクション・テーブルを伴う大規模なブラン  チ・ビューに遭遇すると、反映がスキップされることがありました。本件は修正さ  れました。(Bug #28659) #149541 **  'p4 protect'によって管理されるプロテクションで過剰にワイルドカードが使われて  いると(多数のエントリで'...'が多用されている)、'p4 integrate'で「ファイル  にパーミッションがありません」と報告されることがありました。'p4 integrate'  は他のコマンドと同様にプロテクション内のワイルドカードの数に影響されなくなり、  どの場合でもより適切なメッセージ(「ワイルドカードが多すぎます」)を出力して  失敗するようになりました。(Bug #28422). #145613 **  変更#130372が原因で、成功時に標準出力を生成するform-out仕様トリガが有効で  あるサーバにおいて、ユーザが'p4 spec' または 'p4 jobspec'を実行したときに  サーバがクラッシュしていました。また、成功時に標準出力を生成するform-out  トリガにより、トリガを起動する'p4 change'、'p4 group'、または'p4 submit'の  各コマンドの実行中にコマンドライン・オプションが無視されていました。これ  は修正されました。(Bug #27892) #143891 **  'p4 change'によって、いくつかのテーブルに不要な書き込みロックがかけられ  ていました。これは修正されました。(Bug #27919) #143551 **  -Jオプションによって指定されたジャーナル・ファイルが異なるファイル・システム  にある場合、変更#142077 によって切り捨てエラーのバグが発生していました。  これは修正されました。(Bug #27922) #142077 **  いくつかのUnixプラットフォーム(Solaris、HPUX、AIX)では、ジャーナル・ファイル  を切り替えようとして失敗していました。これは修正されました。(Bug #27607) #141953 *  変更#127617により、P4EDITOR、P4DIFF、およびP4MERGEの設定に空白が含まれると、  Windows以外のプラットフォーム上で別々の引数に分割されなくなっていました。  これは修正されました。Windowsクライアントでは引き続き、最初の+、-、または/  の前にあるコマンドのすべての部分を実行可能パスとして扱います。(Bug #27585) #141402 **  'p4 client/label/branch -d'では、処理上必要のない、データベース・テーブル  への書き込みロックを要求していました。これは修正されました。(Bug #27504) 2007.3におけるバグ修正 ----------------------- #139650 **  サーバ追跡が有効にされている場合、RPCのインバウンドおよびアウトバウンドの  バイト表記によるサイズが、誤って負の値として報告されることがありました。  これは修正されました。 (Bug #26763) #139099 **  サーバ追跡が有効にされている場合、RPCのインバウンドのバイト表記によるサイズ  が、誤ってゼロとして報告されることがありました。これは修正されました。  (Bug #25684、#24578) #138968 **  変更#119708により、タグ付きのプロトコルを使用すると、'p4 revert -k'が正常  終了した復元の結果を報告しないという退行が生じていました。これは修正され  ました。 (Bug #27061) #137032 **  2007.3にアップグレードすると、db.archmapおよびdb.view(haveMapエントリ)が  リビルドされます。このアップグレードにより、Bug #24943 によって導入され、  以前に変更#136742によりオンザフライでパッチが適用された不良データが修正され  ます。 #136601 **  リモート・ディポへの接続が失敗すると、エラー・メッセージが文字化けしていま  した。 これは修正されました。  (Bug #26468) #133838 **  'p4 help protects'において'-m'オプションの動作が明確化され、排他的なマッピ  ングを報告しないことが注記されました。  (Bug #25794) #133764 *  'p4 set -S <サービス>'で$P4AUDITが出力されるようになりました(設定されてい  る場合)。(Bug #26005) #133327 **  'p4 submit'により、現在追加/編集目的で作業状態にされていないファイルを含む  チェンジリスト・フォームの更新が可能でした。これらのファイルは無視される  ものの、エラーが報告されませんでした。これは修正されました。(Bug #25771) #133189 **  変更#117342により、逆のDNSエントリを見つけることができないサーバに対して  'p4 login'が使用できないという退行が生じていました。これは修正されました。 (Bug #26009) #132920 **  非常に小さいジャーナル・ファイルをまとめて結合すると、'p4d -jr'によって復元  できないことがありました。これは修正されました。  (Bug #25968) #130369 **  他のユーザがサブミットしていたファイルに'p4 unlock'を実行すると、検出されな  いことがありました。これは修正されました。  (Bug #25408) #130219 **  'db.monitor'エントリに対してジャーナルが作成されず、誤ってチェックポイントが  作成されていました。これは修正されました。(Bug #12532) #130201 **  サマリ・モードでの'p4 sizes'におけるメモリリークが解決しました。  (Bug #25326) #129956 **  検索文字列に関係演算の右側が欠落している場合のわずかなメモリリークが解決し  ました。(Bug #25373) #129950 **  大文字と小文字、ワイルドカードが混在する検索クエリの処理が修正されました。  検索では大文字と小文字が区別されません。  (Bug #25347、#25371) #129925 **  フィールドに非常に長い単語が含まれている場合、仕様ディポを更新し、残りのジョ  ブ内容にインデックスを付けます。これらの単語にはインデックスが付けられないこ  とに注意してください。 (Bug #25349) #129820 **  'p4 change -d'により'db.working'テーブルの不必要なスキャンが行われていまし  た。この処理は、多くのファイルを作業状態にしている大規模なサイトでは長い  時間がかかる可能性があります。これは修正されました。(Bug #25340) #129045 **  プロキシ経由で'p4 sync -p'を実行すると、プロキシがサーバからリビジョンを取得  する必要がある場合にHaveリストが更新されていました。これは修正されました。  (Bug #25274) #129045 ** ***  プロキシは実質的に更新時間ゼロでファイルをキャッシュできます。(Bug #23408) #129045 ***  'p4 -Zproxyverbose print'では、コマンドの要求を満たすためにプロキシ・キャッ  シュが使用されたかを報告するようになりました。 (Bug #22802) #128995 **  'p4 protect'では、'admin'モードの説明がcommentsセクションに記述されます。  (Bug #11155) #128595 **  'integbatch: too many handles!'または'syncbatch: too many handles!'のエラー  によりサーバに障害を引き起こす原因となっていた問題が修正されました。  (Bug #25245、#18873、#21511) #128356 **  新しいライセンスが有効な期限日を伴って(手動または'p4 license'コマンドによ  り)設定されている場合でも、PERFORCEサーバが"License expired"というメッセー  ジにより停止されることがありました。この現象は、サーバが最初に始動したとき  のライセンスが古くなった場合にのみ起きていました。(Bug #24800) #128087 **  認証の試行の失敗が、サーバのエラーログに記録されるようになりました。  (Bug #17988) #127651 **  リモート・ディポからインポートされたファイルに'p4 submit'を実行すると、  次のエラーで失敗することがありました。 Operation: dm-SubmitChange Operation 'dm-SubmitChange' failed. is missing from the rev table.  これは修正されました(Bug #10125)。 #127617 *  P4EDITOR、P4DIFF、およびP4MERGEでの空白は、WindowsとUNIXとでは異なる方法で  扱われるようになりました。UNIXでは、従来と同様、区切られた単語はコマンド名  と初期引数として扱われます。Windowsでは、区切られた単語はコマンド名(埋め込  まれた空白を含む)として扱われ、+、- または / で始まる単語が現れると、それ  が初期引数を表すとみなされます。(Bug #690、#5297、#24174) #127480 **  'p4 diff2 -u'は誤ってバイナリ・ファイルを処理対象にしており、読み取り不能な  バイナリの差分を生成していました。この動作は変更されました。現バージョンで  は、バイナリ・ファイルは'-t'オプションの使用時にのみ、強制的に比較が行われ  ます。(Bug #20986) #127031 **  サーバ監査出力の'-A auditlog'が、最終的にエラーログ・ファイルの'-L logfile'  に出力されてしまうことがありました。この現象はほとんどの場合、'-vtrack=1'に  よる追跡が有効にされているときに発生していました。(Bug #23377) #124983 **  'p4 monitor show'では、失効したプロセスが表示されなくなりました。正しく終了  されなかったプロセスについては、ステータス・レコードが自動的にdb.monitor  テーブルから削除されます。(Bug #12956、#21593) #124936 **  トリガ内の%clienthost%は、逆のDNSエントリが見つからない場合、クライアントの  IPアドレスに置き換えられます。(Bug #19911、#21506) #124875 *  基底のファイルシステムに、ファイルの作成は可能だがchmodは不可であるなど、  特定の権限の組み合わせがある場合、'p4 sync'(およびその他のコマンド)がループ  することがありました(通常はsambaまたはNFSなどのネットワーク・ファイルシス  テムで)。これは修正されました。(Bug #16726、#18049) #124344 **  ファイル・アクセス・モードが手動で変更され、読み取り権限が削除されると、新し  いリビジョンをRCS ,vファイルにサブミットしたときに前のリビジョンが失われる  ことがありました。これは現バージョンでは回避されます。(Bug #24961) #123740 **  最新リビジョンのファイルタイプとは異なるファイルタイプであった時点に遡って  同期されたファイルに'p4 edit'を実行すると、そのファイルは同期されたリビジョ  ンではなく、最新リビジョンのタイプであるかのように扱われます。これによって  多くの場合、ファイルモードを変更しない、またはシンボリックリンクのリンク先  のファイルモードを変更するシンボリックリンクで問題が発生していました。  (Bug #24900) #121849 *  負の数値、または負の数値へとオーバーフローする数値は、p4コマンドに対するチェ  ンジリスト引数として使用できなくなりました。例えば、Windowsサーバに対して  'p4 review -c 111111111111'を実行すると、チェンジリスト引数が負の数値へと  オーバーフローし、その結果サーバでは過剰にCPUが消費され、マシンがハングアッ  プしていました。現バージョンではこの現象が発生しなくなりました。(Bug #24538) #121382 *  contentトリガが使用される際に作成される、db.revpxの作業中リビジョンのエント  リで、(サイズを-1として報告するのではなく)ファイルのサイズが正しく報告され  るようになりました。(Bug #24558) #131532 **  プロキシ・サーバを通して発行されるクライアント・コマンドは、サーバに記録さ  れ、プロキシのホスト/クライアント・ホスト形式でログファイルの監査証跡を取得  します。'p4 monitor show -e' の形式により、これらのコマンドに対するプロキシ・  ホストではなくクライアント・ホストが報告されるようになりました。 -------------------------------------------------------------------------- -------------------------------------------------------------------------- リリース 2007.2 2007.2 の主な新機能 ------------------- 新しいファイルタイプ 'utf16' - #119109 * ** *** 新しいファイルタイプとしてutf16が追加されました。utf16は、UTF16のクライアント・ ファイルを格納するテキストのファイルタイプです。これらのファイルはUTF8に変換 可能である有効なUTF16でなくてはなりません。 これらのファイルの内容が 'p4 diff' などのコマンド出力に使用されると、その内容はUTF8で出力されます。完全なファイル 表記のみがUTF16で記述されます。このファイルタイプはUnicodeモードのサーバと同様 に非Unicodeモードのサーバでも動作します。これらのファイルを2007.2より前のバー ジョンのクライアントと同期すると、ファイルはUTF8に変換されます。サーバがUnicode モードである場合、UTF16ファイルに由来する内容のコマンド出力は選択されたP4CHARSET に従って変換されます。'p4 add'コマンドで自動的にutf16を検出するには、BOMが必要 です。BOMがない場合、ファイルはクライアント・バイト順になっていると想定されます。 'p4 sync' などによってファイルが書き込まれるとき、BOM付きでクライアント・バイト 順で書き込まれます。 ファイルタイプ修飾子 '+S' の改善 - #115478 ** ファイルタイプ修飾子 '+S' が拡張され、保持すべきファイル・リビジョンの数を サーバに通知する任意指定の数値が含まれるようになりました。 例: p4 add -t binary+S7 foo.exe 上記の例では、8番目のリビジョンがサブミットされるとき、最初のリビジョンが削除 されます。 サポートされる数値は、1から10、16、32、64、128、256、512です。 このファイルタイプを持つファイルには怠惰なコピーが作成されないことに注意してく ださい。つまり、古いリビジョンを削除するとスペースが節約されますが、ファイルに 複数のブランチを作成すると、より多くのスペースが使用されることになります。 より詳しくは、'p4 help filetypes' を参照してください。 (Bug #1880) 新しい 'p4 sync' のオプションによりdb.haveの更新が無視されます - #111247 ** 'p4 sync' で '-p' オプションが使用可能になりました。これにより、サーバに記録さ れずにユーザがファイルを同期させることができます。このオプションは、クライアン ト・ワークスペースの状態を保存する必要がない場合にビルド・クライアントのデータ を書き込む際やコンテンツを発行する際に非常に有用です。 (Bug #22857) パフォーマンスの改善 - #114771, #113299, #117618, #115072 ** 1) ブランチしたファイルのサブミット 前回のリリースで行われたブランチ/サブミットの改善がさらに進められています。'p4 submit' のコミットの処理が書き直され、大きいブランチの作成処理中のパフォーマンス が改善されました。前リリースと比較して、ほとんどのコマンドでブロック時間が非常 に短くなっています。ブランチ作成の全所要時間も30%ほど短縮されています。 2) 接続プロトコル * PERFORCE接続確立プロトコルおよびバッファリングが調整され、TCPがいくつかのオペ レーティングシステムで発生させる可能性がある公称10分の1秒の遅れが回避されるよう になりました。いくつかの場合、これにより短いコマンドの連続での所要時間を劇的に 削減することができます。 3) <ファイル仕様>@label,@label の高速化 ファイル仕様とラベル内の一致ファイル数がほとんど重ならない場合、<ファイル仕様> @label,@label を使用してリビジョンを指定すると非常に処理速度が遅くなることがあ りました。 (Bug #23907) 4) 最終アクセス時間の更新におけるロックモードの変更 アクセス時間が実際に更新されない限り、サーバがアクセス時間の更新のためにdb.user またはdb.domainに書き込みロックをかけなくなりました。 (Bug #6837) 新しいadminコマンド - #108286, #118447 ** 'p4 admin dbstat' dbstatはデータベース・ファイルの内部ノード・ページをスキャンし、次にいくつかの 単純な統計データを出力します。この処理ではスキャン実行中のデータベース・テーブ ルへの書き込みアクセスがブロックされるため、注意して使用すべきです。 'p4 admin updatespecdepot' updatespecdepot はサーバに対し、スペック・ディポにフォームを格納するよう指示し ます。このコマンドは、スペック・ディポを有効にしたばかりのインストールにおいて、 既存のフォーム・データを事前に埋め込みたい場合に非常に役立つことがあります。 (Bug #19309) これらの新しいコマンドに関してより詳しくは、'p4 help admin' を参照してください。 新しいトリガ - #116132 ** 'p4 fix' コマンドでジョブ修正を追加する前に、'fix-add' トリガが実行されます。 'p4 fix -d' コマンドでジョブ修正を削除する前に、'fix-delete' トリガが実行されます。 フォームがコミットされ、自動生成されたフィールドへのアクセスが獲得されると、 'form-commit' トリガが実行されます。(このトリガは2006.2で導入され、文書化され ていませんでしたが、当リリースで完全にサポートされるようになりました。) より詳しくは、'p4 help triggers' を参照してください。 2007.2 のその他の新機能 ------------------------ #119528 ** 'p4 protect' ではユーザが最新の'super'エントリを削除することはできなくなりました。 (Bug #14419) #119344 ** コンテンツ・トリガでは、'p4 fstat @=' の出力の 'headModTime' フィールド により、サブミットされるファイルのタイムスタンプにアクセスできるようになりまし た。以前のリリースでは、ファイルがサブミットされるまでタイムスタンプ情報は取得 できませんでした。 (Bug #23591) #118826 ** 'p4 change' に新しく '-u' オプションが追加され、サブミット済みチェンジの所有者 がチェンジのコメントや[Jobs:]フィールドを更新できるようになりました。 (Bug #1159) #116469 * ** 反映および衝突解決への変更。 'p4 integrate' は互換性のチェックを行うようになり、'-t' オプションが使用され た場合を除き、非互換のタイプ間での反映を禁じるようになりました。(タイプの互換 性については、下の図を参照してください。) ファイルが '-t' により反映されている場合、'p4 resolve' は次のように動作します。 'theirsを承諾': クライアント上のファイルのタイプを変更します。 'yoursを承諾' : 作業状態のファイルタイプが'yours' のファイルタイプと一致する ように、タイプの変更を元に戻します。 この新しい動作は、ユーザが'p4 reopen'を実行してファイル・オープンのタイプを変更 した場合にも適用されます。 T - テキストとして衝突解決 B - バイナリとして衝突解決 x - 非互換のタイプ ('integrate -t'が必要)  互換性: text binary symlink resource unicode apptxt apple text T B x x T x x binary B B x x B x x symlink x x T x x x x resource x x x B x x x unicode T B x x T x x apptxt x x x x x T x apple x x x x x x B (Bug #202, #218, #7522, #8649, #13352, #15653, #16636, #16845, #16888, #20370, #22382, #23343) #119955 ** 2006.1 で再実装されていた、再度の反映操作を抑止し最適なベースを選ぶための 'p4 integrate' のアルゴリズムは、当リリースで大幅に修正されました。新しい変更点 を以下に示します。 1つの「コピー元」リビジョンを反映すると以前のリビジョンすべてが信頼済みとなり、 以後古いリビジョンのどれかに 'p4 integrate' が実行されても、行うべき処理がなく なります。これは「よいものだけを選択」することでのみ起こります(特定のリビジョ ンを 'p4 integrate' で反映する場合)。(Bug #23698) 未反映レコード('p4 integrate'で作業状態となったが 'p4 submit'でサブミットされ ていないファイル)が、最適なベースを探す際にその対象として考慮されるようになり ました。これにより、'p4 integrate -i' オプションを使わずに、既に反映目的で作業 状態にされている関連ファイルに反映することが可能になりました。(Bug #24251) 'p4 integrate' はマージ/コピー/無視が複雑に組み合わされた反映レコードによる、 間接的な反映により適切に対応しています。これにより距離の離れたファイル間の反映 において、スケジューリングされる反映がより少なくなり、選択されるベースがより的 確になります。(Bug #24207) 反映が必要なリビジョンが既に反映済みのリビジョンより前にある場合、'p4 integrate' が誤って反映が必要なリビジョンの後のソースファイルをベースに選択することがあり ました。この現象は通常、「よいものだけを選択」した場合にのみ発生します(特定の リビジョンを 'p4 integrate' で反映する場合)。(Bug #23469) 反映元のファイルがブランチ後に追加目的で再度作業状態にされた後、元のファイルが さらに変更され、再度ブランチされた場合、'p4 integrate' でベースが見つからない (または不適切なベースを選択する)ことがありました。(Bug #24150) #115979 ** 'p4 monitor terminate [id]' は、処理における計算段階を超えたコマンドに対して 正常に使用できるようになりました。実際にプロセスが終了するまで最大10秒かかる 場合があります。(Bug #11938) 2007.2/122958 (初回リリース)以降のバグ修正 ------------------------------------------- #140379 ** 中間ブランチによって分けられている2つのブランチ間で反映を行う際、それ自体が 反映元ファイルのリビジョンのコピーである中間ファイルの1リビジョンから反映先 ファイルがマージされている場合には、'p4 integrate'は反映対象が存在しないと 判断していました。このようなマージ/コピーの連鎖は、完全なコピーではなくマージ として扱われるようになりました。(Bug #27216) #139758 ** Solaris上で動作するp4dサーバでは、クライアントの接続が切れたとの誤検出により 散発的にコマンドが終了されることがありました。これは修正されました。 (Bug #27240) #136754 ** 新しいライセンスが有効な期限日を伴って(手動または'p4 license'コマンドにより) 設定されている場合でも、PERFORCEサーバが"License expired"というメッセージによ り停止されることがありました。この現象は、サーバが最初に始動したときのライセ ンスが古くなった場合にのみ起きていました。(Bug #24800) #136742 ** ある状況下の'p4 obliterate'コマンドで、そのファイルを指している怠惰なコピー がまだ存在するアーカイブ・ファイルが消去されることがありました。この変更によ り、その現象が発生しなくなりました。(Bug #26682) #136614 ** いくつかのコマンドについて、ディポ・パスに依存した、一貫しない結果が示される ことがありました。通常この現象が発生したときには、無制限の'p4 sync'によって 正しい動作に戻されていました。この問題は、以前に同期されたファイルがもう現在 のクライアント・ビューにマッピングされていない場合に、クライアント・パス名に おいてパス上の意味をなす場所に'.'があるときにのみ発生していました。これは 修正されました。(Bug #24943、#26541) #135827 ** 変更(#120526)ではまた、'-m1 <ファイルパス>'の指定時、'-u'または'-c'をオプ ションに付けると'p4 changes'が機能しないという退行も生じていました。これは修正 されました。(Bug #26464) #135235 ** 削除リビジョンより前に反映されないリビジョンがあると、以降の反映処理でファイ ルの不適切な再ブランチが発生することがありました。この変更によって旧バージョ ンの動作に戻され、反映先も削除されている場合には、削除リビジョンより前のリビ ジョンから再ブランチを行わなくなりました。(Bug #25662) #132978 ** まれなケースではあるものの、Windows上で動作するPERFORCEサーバがスレッドの 作成に失敗すると、その理由がサーバのエラーログに記録されるようになりました。 このような状況下では、サーバはメインの親スレッドでコマンドの実行を試行せず、 さらにコマンドを実行する前にリソースが利用可能になるまで待機するようになり ました。(Bug #25981) #132390 ** ある状況下において'p4 changes -i'、'p4 fixes -i'、'p4 jobs -i'を実行すると、 指定されたファイルへと反映されたチェンジリストを除外してしまうことがありまし た。この問題は修正されました。(Bug #25828) #131348 ** Windows上で動作するPERFORCEサーバで、auditlogが有効にされている場合にいくつか のコマンドでハングアップすることがありました。これは修正されました。 (Bug #25612) #131114 ** 変更(#117342)により、主要な認証サーバに対して'p4 login'(PERFORCEチケット)が 使用できなくなるという退行も生じていました。これは修正されました。(Bug #25312) #128851 ** サーバは、接続要求の受け入れを10回連続して試みた後でも終了しなくなりました。 一般的に、この理由はコンピュータが構成中であり、単にサーバのリソースの問題である ためです。問題はクライアント側にある場合があるため、現バージョンではサーバは スリープ状態となり、その後引き続き再試行するようになりました。(Bug #24156) #124999 ** 'p4 integrate'コマンドでファイルを同期する際、ディレクトリが通常のファイルに 置き換えられた場合にディレクトリが削除されるように、ファイルの追加よりも前に ファイルの削除を同期するようになりました。(Bug #17409) #124947 ** バイナリ・ファイルの衝突解決が、'p4 integrate' によってではなく単純なバージョ ン更新(すなわち p4 resolve の実行を要する、最新リビジョンへの p4 sync)に よって実行された場合、'p4 submit' により誤ってチェックのサブミットが回避され ていました。サブミットでは「編集するか元に戻してください」と報告されますが、 ファイルは既に編集目的で作業状態にされています。(Bug #25038) #123381 ** コメント・フィールドに約2700文字からなる3つの文字列を持つジョブを追加すると、 ジョブ・インデックス btree が破壊されることがありました。これは修正されました。 (Bug #24793) #123248 ** 'p4 submit -d' は、ユーザのジョブ・ビューに合致するすべてのジョブのステータ ス・フィールドを "ignore" に設定していました。当バージョンでは、ユーザのジョ ブ・ビューに合致するジョブが "p4 submit -d" を使用したときにも変更されなくなり ました。(Bug #24711) 2007.2 におけるバグ修正 ------------------------ #122782 ** 'p4 integrate' が誤って削除済みのリビジョンからブランチを試みた場合に、 その反映元ファイルが再度追加されており、再追加されたリビジョンが反映先ファイル で無視されていると、'p4 submit' が失敗することがありました。 これは修正されました。(Bug #24663) #122672 * ディレクトリを削除すると、.DS_Store ファイルが削除されるようになりました。 (主に Macintosh 環境で見られる現象) (Bug #24270) #122284 ** チェンジ・フォームをもう一度編集する必要があった場合に、'p4 submit' でサブミッ ト・オプションが反映されない場合がありました。これは修正されました。 (Bug #24671) #120969 ** 'p4 typemap' を使用して、スペック・ディポのファイルのファイルタイプを構成するこ とが可能になりました。 例: TypeMap: text //spec/client/... スペック・ファイルのデフォルトはctextです。サブディレクトリを持つことは、ファイ ルシステムがクライアントのすべてに対してディレクトリを作成できないほど多くのク ライアントを持つサイトでは問題になることがありますが、作成ファイルタイプを(上 記の例のように)テキストに変更することにより、サーバにサブディレクトリが必要で はなくなります。サーバ・ストレージ・タイプのみが適合しているスペック・ディポ・ ファイルにファイルタイプを設定すると、ストレージ修飾子を設定しても影響はありま せん。 (Bug #24454, #24205) #120526 ** db.revcx を使用した'p4 changes -m1 <ファイルパス>' による最適化では、常にパフォ ーマンスが向上するとは限りません。db.revcx テーブルのスキャンの際、事前設定の行 数を調べても適合するファイルが見つからない場合、処理が中断され、直接db.revを使 用してフォールバックするようになりました。 (Bug #17862) #120385 ** 'p4 integ' がブランチ仕様および順序の不適切な反映リストを作成するファイルセット と共に使用されると、同期したファイルのHaveRevを 'none' に変更することがありまし た。これは修正されました。 (Bug #24149) #119979 ** まれに、次のエラー: 'Database open error on db.!' 'BTree is corrupt!' が誤って表示されることがありました。 この現象は初期化の問題によりWindowsサーバ でのみ発生する場合がありました。これは修正されました。(Bug #24335) #119708 ** 'p4 revert -k ' では必要のないときにクライアント側のファイルをチェックし ていました。これは修正されました。 (Bug #21679) #119687 ** タグ付き出力に p4 diff2 を実行すると、比較対象ファイルのペアごとに少量のメモ リ・リークが生じていました。これは修正されました。 (Bug #24079) #119631 ** p4 diff2 -q のタグ付き出力に同一のファイルが含まれていました。-q オプションを 付けたとき同一のファイルがタグ付き出力に含まれないよう、修正しました。 (Bug #23077) #119616 * Unicodeモードで'p4 -d <ディレクトリ>' を実行すると、コマンドライン・ディレクト リのオーバーライドが無視されていました。これは修正されました。(Bug #23950) #119597 * exif形式のjpegファイルが、cbinary(既に圧縮されている)ではなくバイナリとして 追加されていました。これは修正されました。 (Bug #23999) #119596 * p4 diff -sd で、シンボリックリンクの参照先がないと、シンボリックリンクがないと 誤って報告されていました。これは修正されました。(Bug #24023) #119245 ** UNIXのプラットフォームで実行されるトリガがオープン・ファイル記述子のいくつかを サーバから継承していました。この現象はもう発生しません。 (Bug #24204) #119012 ** 'p4 change -f' のエラーメッセージおよびドキュメンテーションは、どのフィールドが 読み取り専用であるかを反映するように改善されました。 (Bug #19922, #13231, #18962) #118635 ** サブミットが完了する前に、ブランチされたファイルのソース・リビジョンが削除され ると、不良なアーカイブを持つブランチ済みファイルがサブミットされることがありま した。これは修正されました。 (Bug #22297) #118282 * アドレスを返さずに正常終了するホスト名のルックアップによってクライアントがクラッ シュしなくなりました。(Bug #24104) #118102 ** 仕様コマンドのエラー処理が改善され、相互排他の '-i'、'-o'、'-d'の各オプションを 1つの仕様コマンドで一緒に使用することが許されなくなりました。以前は、誤ったエ ラーが生成される場合があり、状況によってはオプションのどれかを使用してコマンド が実行されることがありました。 (Bug #24116, #24081, #24447) #118064 ** 'p4 obliterate' では「抹消」されるリビジョンのリストに削除リビジョンが報告され なくなりました。「抹消」のメッセージは、アーカイブからファイル・コンテンツを取 り除く動作を示す用語として使用されます。 #118057 * ** 'p4 submit' を 'revertunchanged' サブミット・モードで実行すると、クライアント・ ファイルのパーミッションの再設定が失敗していました。これは修正されました。 (Bug #23536). #117730 ** p4 job -d は、関連付けられた作業中またはサブミット済みの修正レコードがないジョブ のみを削除します。(Bug #16296) #117342 * ** 同じサーバ・インスタンスに対して(ip:port# と host:port# のように)異なる値を P4PORTに設定すると、PERFORCEチケット・ファイルに複数のチケット・エントリが作ら れていました。これは修正され、同じサーバ・インスタンスにはどちらかのP4PORTの値 を使用して、常に単一のチケット・エントリが生成されるようになりました。 (Bug #16707, #18349) #117090 ** 2つの削除済みファイル間で 'p4 integrate' を実行すると、パーミッションに関して 不適切なエラーメッセージが生成されていました。現リリースではより適切に「すべ てのリビジョンが既に反映されています。」と表現されています。(Bug #23953) #116771 ** 追加目的で作業状態にされたファイルに 'p4 obliterate file@change' を実行すると 作業状態のレコードが削除され、'p4 obliterate file@change,change' を実行すると 削除されませんでした。現リリースでは、どちらの場合も削除されません。追加目的 の作業状態のレコードを削除するには、リビジョンを指定せずに 'p4 obliterate file' を使用する必要があります。 (Bug #23915) #116451 ** スーパーユーザが'p4 counter -f -d'を使用すると保護されたカウンタを削除できるよ うになりました。 以前はカウンタを設定可能でしたが、削除できませんでした。 #116428 ** クライアント上のリビジョンが binary+w (またはその他の非テキストタイプ)で、新 しいリビジョンがバイナリであるときリビジョン間で同期しようとすると、「上書きで きません」とのメッセージにより失敗していました。また、クライアントにPERFORCEの 制御下にない書き込み可能ファイルがあり、その後そのファイルが +w タイプで別のク ライアントに追加されると、同期する際にPERFORCEがそのファイルを上書きしていまし た。(Bug #15562, #23777) #116173 ** 'change-content' タイプのトリガが失敗すると、クライアント・ワークスペース上の 編集済みファイルが読み取り専用の状態のままになっていました。これは修正されまし た。(Bug #14880) #116113 * ** セキュリティ・レベルで許容される限り、期限切れのPERFORCEチケットは有効な P4PASSWD の設定をオーバーライドしなくなりました。 (Bug #15520) #115153 ** *** Windowsプラットフォーム上では、複数のPERFORCEサーバまたはPERFORCEプロキシ・サー バを同一のTCPポートで起動することはできなくなりました。起動しようとすると、その アドレスが使用中であると正しく報告されるようになりました。(Bug #23630) -------------------------------------------------------------------------- -------------------------------------------------------------------------- リリース 2006.2 2006.2 の主な新機能 ------------------- クライアント・ファイルの改ざんのチェック - #101065, #101345, 101699 * ** 'p4 submit' では、'am' または 'ay' により反映および衝突解決されたファ イルが「衝突解決」の後、「サブミット」の前に変更されていないことをチェ ックするようになりました。ファイルの改ざんが検出されると、エラーが発生 して変更されたファイルが表示され、サブミットを完了するためにファイルを 再編集または復元するよう要求されます。 例: //client/main/foo は衝突解決後に改ざんされています。編集または復元してください。 改ざんのチェックはブランチ作成にも適用されるため、大容量のデータセットの処理 によるオーバーヘッドを integrate '-v' オプションにより回避することができます。 このオプションはファイルをクライアントにコピーしません。 改ざんされたファイルをサブミット実行前にチェックするため、'p4 diff -sb' コマン ドは反映目的で作業状態にされている、衝突解決済みであるが変更が加えられている ファイルをレポートするようになりました。これらのファイルは、 'p4 diff -sb | p4 -x - edit' コマンドにより、編集目的で再度作業状態にすること ができます。 'am' オプションにより衝突解決されたファイルで改ざんのチェックが機能するためには、 2006.2 のサーバとクライアントが必要です。 (Bug #17607, #15928, #15654, #20029, #20587) 新しいクライアント・オプション 'SubmitOptions' - #106812 ** 新しい 'p4 client' フィールドの 'SubmitOptions' により、ユーザがサブミットの 動作を変更することができます。このフィールドに対する 6 つの異なる値により、 未変更のファイルの取り扱いや、サブミットされたファイルが再度作業状態にされた 場合の処理が変わります。詳細に関しては、'p4 help client' を参照してください。 サブミット・オプションの 未変更の  サブミットされた 値   ファイル  ファイル ---------------------------------------------------- submitunchanged サブミットされる submitunchanged+reopen サブミットされる 再度作業状態にする revertunchanged 復元される revertunchanged+reopen 復元される 再度作業状態にする leaveunchanged 作業状態のまま leaveunchanged+reopen 作業状態のまま  再度作業状態にする また、'p4 submit' には '-f option' というオプションが指定できるようになりました。 このオプションにより、ユーザはクライアントに設定されている SubmitOption を 上書きすることができます。 例: p4 submit -f leaveunchanged 'p4 submit' でブランチされたファイルの高速化 - #101435, 107393 ** 以下に示す変更を組み合わせて、メタデータ更新(db.* ファイルのロック)の所要時間 が最大40%短縮されています。最も大幅な減少は、多数のブランチされたファイルをサブ ミットする際に確認できます。 1) db.archive テーブルが db.archmap に置き換えられました サーバの以前のバージョンでは、db.archive テーブルの導入により obliterate   コマンドのパフォーマンスが改善されました。このテーブルの導入による副次的作用   として、ファイルをサブミットして怠惰なコピーとなる場合のパフォーマンスが低下   していました。このテーブルは、db.archmap(アーカイブ・マップ)テーブルに置き   換えられ、そのようなパフォーマンス上の問題は発生しなくなりました。 2) バッファリングされたジャーナル・ファイル   ジャーナル・レコードが記述される方法を最適化することによって、パフォーマンス   が全般的に向上しました。この変更により、ジャーナル・ファイルに対する書き込み   の数およびロックの数が削減されました。 '自動' ラベル - #107125 ** 2005.2 で導入されていたものの文書化されていなかった、新しい自動ラベル機能が 完全にサポートされるようになりました。「リビジョン」フィールドをラベル仕様に 追加することにより、そのラベルに当該リビジョンを使用して 'p4 labelsync' が実行 されたかのように見せることができるようになりました。唯一の違いは、「リビジョ ン」仕様が動的(#head など)であると、自動ラベルの見かけ上の内容が変更するのに 対し、'p4 labelsync' による静的ラベルは変更しないことです。 'p4 labels ' コマンドを実行するとき、自動ラベルは表示されません。 (Bug #20887) リモート・ディポの管理の改善 - #106497, #100829, #108461 ** リモート・ディポ・サーバの管理および相互運用性を改善するため、いくつかの変更が 行われました。 1) ロック・サポートの改善   リモート・ディポ内にあるファイルにのみアクセスするとき、サーバが db.rev   (または db.revhx および db.revcx)テーブルをロックしなくなりました。   つまり、リモート・ディポにおいて 'p4 dirs' を使用(p4v でリモート・フォル   ダを展開するなどして)しても、ローカル・ロックを保持しなくなりました。   (Bug #19730) 2) MaxScanRows/MaxResults のサポート   リモート・ディポの操作では、'p4 group' によってリモート・ユーザ 'remote'   に課される、MaxScanRows および MaxResults の制限が適用されるようになりました。   (Bug #18694) 3) テーブルのバージョンと折衝するプロトコル   テーブルの互換性について最高レベルで折衝することにより、いくつかの問題が解決   されました。 以前は、ある種の複合型の修飾子(text+Fk など)が付いたファイ   ルは、リモート・ディポから同期できませんでした。折衝により、ファイル・サ   イズなどの新しいフィールドをリモート・サーバからのデータ転送に含めることが   可能になりました ('p4 sizes' はリモート・ディポで動作します)。   (Bug #14896, #22146) 'p4 group' における新しい MaxLockTime- #106371 ** 'p4 group' に 'MaxLockTime' フィールドが追加されました。このフィールドを使用 して、問い合わせによりデータベース・テーブルへのロックが長時間保持されるのを 回避できます。'p4 help maxLockTime' を参照してください。(Bug #21206) ライセンス・ファイルの取り扱いの改善 - #103739 ** 新しい管理者コマンドの'p4 license' により、'super' アクセス権を持つユーザが、 サーバを停止することなく Perforce に新しいライセンス・ファイルを追加すること ができます。詳細については'p4 help license' を参照してください。(Bug #1948) 2006.2 のその他の新機能 ---------------------- #112275 ** 解析ツールのサポートを改善するため、ジャーナル・ファイルに、単一のデータベー ス・ロックにより書き込まれた行を区切る線が引かれるようになりました。 (Bug #3582) #107394 ** 当リリースでは 'p4 obliterate' が変更されました。obliterate コマンドは db.archmap(アーカイブ・マップ)テーブルを利用して、ブランチされたファイル (怠惰なコピー)の有無を調べるようになりました。 怠惰なコピーが存在する場合、アーカイブ(ファイルの内容)は消去されないため、 ファイルを完全に消去したとしても、対応するアーカイブ・ファイルが消去される ことが保証されません。'p4 help obliterate' を参照してください。 #107110 ** ファイルは、ファイル名とリビジョン番号によってではなく、ファイル名と(作業中 の)チェンジ番号をキーとしてデータベース・アーカイブに格納されるようになりま した。この情報は通常、'p4 obliterate' コマンドによってのみユーザに報告されて いましたが、アーカイブを調査する管理者にも変更が示されます。アーカイブ内の古 いリビジョン番号は、付け替えられません。(Bug #21543, #22756) #107943 ** 衝突解決マーカは、完全パスを使用してファイル名とリビジョンを示すようになりま した。YOURS ファイルがクライアント構文で示されるのに対し、ORIGINAL ファイル および THEIRS ファイルはディポ構文で示されます。(Bug #18440) #107082 ** 新しいコマンドである 'p4 sizes' は、ディポ内のファイルのサイズ情報を表示します。 これは UNIX の 'du' コマンドと機能面で類似しています。詳細情報については、 'p4 help sizes' を参照してください。(Bug #3271) #106450 ** 'p4 submit' は '-d description' オプションを取るようになりました。 このオプションにより、ユーザはファイルのサブミットのためにチェンジリスト・ ダイアログを必要としません。'p4 help submit' を参照してください。(Bug #258) #105638 ** 'maxScanRows' は 'p4 group' で、ユーザがサーバ・リソースを大量に消費するのを 避けるために適用できますが、適用できるコマンドおよびテーブルがいくつか追加さ れています。 従来 'maxScanRows' は、db.rev、db.revhx、db.revdx ではすべてのコマンド、 db.revcx テーブルでは 'p4 changes' コマンドに対してのみ適用されていました。 当リリースでは、すべてのテーブルについて、次のコマンドに対して適用されます。 p4 annotate、branches、change、changes、clients、describe、diff、diff2、 filelog、files、fixes、fstat、have、integrate、integrated、jobs、labels、 labelsync、lock、obliterate、open、opened、release、reopen、resolve、resolved、 reviews、sync、tag maxScanRows は、すべてのテーブルの合計ではなく、各テーブルから読み込まれた 行数に対して、別々に適用されます。 この変更による最も顕著な効果は、'maxScanRows' が' p4 integrated' に対して db.integed テーブルへのアクセスを制限することです。 (Bug #10664, #19802) #102279 ** 'p4 branches/clients/labels' では、'-u user' オプションが使用できるように なりました。このオプションは、コマンド出力を指定されたユーザが所有している ものだけに限定します。(Bug #6053) #101906 ** 'p4 changes -s pending' では、以前は許容されていなかったファイル・パスが使用 できるようになりました。(Bug #10634, #21275) #98791 ** Windows 上の PERFORCE サーバでは、データベース・アクセスのために POSIX レイヤ によるものではなく、標準装備の入出力ルーチンが使用されるようになりました。これ により、オープンしているPOSIX ファイル・ハンドルの最大数に達するという問題が解 決されています。(Bug #19375) 2006.2/111150 (beta)以降のバグ修正 ----------------------------------- #121930 ** Windows 環境で 'p4 verify -v' を実行すると、RCS アーカイブ・ファイルで不足の リビジョンまたは破壊されたリビジョンに遭遇したときにファイル・ハンドルのリーク が発生することがありました。これは修正されました。(Bug #24586) #121180 ** ごくまれにbtree内のデータにおいて(チェックポイント回復直後に発生する可能性 が高い)、btreeレコード挿入によりサーバが無限にループすることがありました。 これは修正されました。(Bug #24532) #120458 ** 'p4 resolve' を対話的に使用して ktext ファイルの衝突を'ay'(yoursを受け入れ) により解決すると、解決済みファイルがサブミット時、または 'p4 diff -sb' により 改ざんされていると誤って報告されていました。これは修正されました。 (Bug #24389) #119263 ** 'p4 obliterate' によりデータベース・ファイルが矛盾した状態で残されることがあり ました。この現象は、ユーザが^Cを押すか、抹消処理の間に'p4 monitor terminate 'コマンドが使用された場合にのみ発生していました。これは修正されました。 (Bug #24236) #116847 ** 前回のp4 submit実行時に「再度作業状態にする」オプションを付けたことにより再度 作業状態になったファイルが以前のサブミット時にブランチされていた場合、 p4 submit が失敗していました。これは修正されました。 (Bug #23776) #114374 * p4dをUnicodeモードで起動していて、p4コマンドラインでP4CHARSETがワイド文字セット (すなわちutf16)に設定されており、P4COMMANDCHARSET がutf8以外の文字セットに設定 されている場合、仕様を編集するp4コマンドはそれらの仕様を P4COMMANDCHARSET では なく utf8 として解釈していました。これは修正されました。(Bug #23004) #113270 ** ktextタイプからテキストに変更されたファイルは、そのファイルがキーワードを拡張し てサブミットされていた場合でも、キーワードが拡張されない状態でサーバに格納され ていました。リリース2006.1 でのみ再現していたこの振る舞いは修正されました。 (Bug #23258) #112219 ** チェンジに前のリビジョンが抹消されているファイルが含まれていると、 'p4 describe -s' が失敗していました。この振る舞いは修正されました。 (Bug #23211) #112011 ** 'p4 change -o' をタグ付きで出力すると、フォーム-アウト・トリガによって加えられ た変更が参照できませんでした。これは修正されました。 (Bug #22578) 2006.2 におけるバグ修正 ----------------------- #111144 ** 変更されたファイルの以前のリビジョンが削除されている場合、そのチェンジに 'p4 describe' を実行すると、誤った差異が報告されることがありました。 この場合も正しく処理され、エラー・メッセージが出力されるようになりました。 (Bug #22987) #110722 ** 'p4 protects' コマンドは、保護テーブルが空である場合にエラー・メッセージを表示 するようになりました。(Bug #22731) #110294 ** 'super' 権限を必要とする 'p4 login ' コマンドにより、他人になりすました ユーザの現在のセッション・タイムアウトが変更されることがありました。この問題は 修正されました。(Bug #22537) #109913 * cygwin 上における 'p4' クライアント・プログラムでは、親ディレクトリに同じ名 前の実行可能プログラムが存在すると、ディレクトリが作成できませんでした。これ は、cygwin が "foo" と "foo.exe" を同じように見せていることに起因していました。 現在、'p4' クライアント・プログラムはこの現象に対応しています。(Bug #18387) #109855 ** クライアント・ビュー、ブランチ・ビュー、保護テーブル、コマンドラインにおいて ワイルドカード (... および *) を過剰に使用すると、サーバがすべての可能性を導 き出そうとして大量のメモリと時間を消費する場合がありました。この作業を簡素化 する効率的なアルゴリズムが導入されたことにより、ワイルドカードを過度に使用し ても、サーバに対してそれほど多くの問題を引き起こさなくなりました。 この問題は以前 2006.1 において、ワイルドカードの取り扱いに内部的な制限を設け ることによって対応していましたが、制限が厳しすぎるためにパッチから取り除かれ ました。2006.2 では、制限を緩和した内部制限が再度取り入れられており、新しい アルゴリズムではその制限に達することはほとんどないと思われます。(Bug #18182, #10561, #19916) #108679 ** 'p4 filelog' は一定の条件下において、不要な rev テーブルの走査を行う場合があ りました。通常、この問題は、filelist 引数の後のファイルが保護マッピングによっ て除外されている場合に発生していました。これは修正されました。(Bug #22113) #108376 ** 'p4 fstat Rn' は、ファイルをマニュアルの記述どおりに正しくフィルタリングしていま せんでした。これは修正されました。 (Bug #22332) #108292 ** いくつかのプラットフォームでは、エラー・ログ・ファイルが 2GB を超えていると、 p4d が起動しないか、エラーを記録しませんでした。これは修正され、プラットフォ ームで大容量のファイルがデータベース・ファイルとしてサポートされていれば、ロ グ・ファイルが 2GB を超えていても障害が発生しなくなりました。(Bug #13476) #108230 ** "p4 triggers" のコメントにあるトリガ・タイプの例を修正しました。(Bug #22296) #108021 ** 削除済みファイルに対して 2 回以上 'p4 integrate -f' を実行すると、反映先のファ イルが使用不可能な状態となり、'p4 submit' を実行すると「マージが保留中です」と 表示され、'p4 resolve' を実行すると「ファイル - は削除されています - 復元して 同期してください」と表示されていました。現在は 2 回目以降の 'p4 integrate -f' コマンドによる実質的な影響はなくなりました。(Bug #21864) #107629 ** リモート・ディポからのエラー(おそらく 'remote' ユーザに対する権限が不足してい るため )がローカル・サーバにより報告されませんでした。これは修正されました。 (Bug #15878) #107321 ** 'p4 user -f' コマンドによりサーバ・セキュリティを 2 以上にして新しいユーザを作 成すると、「不正なパラメータがマングラーに渡されました」というエラーが発生して いました。この現象はもう発生しません。これに代わり、期待されるパスワード・エ ラー・メッセージがユーザに示されます。(Bug #14726) #107305 * ** ファイルの上書きおよびシンボリック・リンクに関するロジックが大幅に変更されまし た。シンボリック・リンクを書き込み可能ファイルに同期させる際に、上書きクライア ント・オプションを受け付けます。ファイル・タイプをシンボリック・リンクからテキ ストに変更する際、以前のシンボリック・リンクが書き込み可能ファイルを指していれ ば、同期により上書きエラーが報告されなくなりました。P4 API も同様に変更されて いますが、詳しくは p4apinotes.txt を参照してください。(Bug #9814, #17099) #106098 ** 仕様フォームに View: エントリを追加する際、頭に '$' を付けるとエラーが発生し、 フォームが保存されません。以前はこの場合にエラーは発生せず、仕様はエントリを 含まずに保存され、この不可視のビューに対応する偽の db.view の値がマップ状態 3 で生成されていました。ブランチ仕様の場合、後にこの仕様による反映を試みると 失敗します。(Bug #21942). #105408 * ** 一時ファイルの取り扱いが変更され、衝突する一時ファイル名が既に存在していても 失敗しなくなりました。また、一時ファイルはランダム・シーケンスを使用して命名 されるようになりました。 (Bug #19573) #105334 ** 仕様フォーム(ブランチ、クライアント、ラベルなど)内のフィールド値に # が含ま れている場合、出力時に引用符で囲まれるようになりました。これにより、フォームの 読み込みの際に # が切り離されてコメントとして扱われることはありません。 (Bug #20829) #105272 ** サーバにより設定されるジョブ内の日付フィールドは、ジョブ内容の検証後に一度更新 され、コミット時に再度更新されます。それにより、値にコミット時刻が反映されるよ うになりました。(Bug #21901) #105043 * ** 仕様定義に未知のフィールド・タイプまたは未知のフィールド・オプションがあっ ても、サーバが Windows 上で異常終了しなくなりました。(Bug #21822) #104828 ** ファイル間で 'p4 integ' を実行後に 'p4 resolve -at' を実行する場合、一方のファ イルにだけファイル・タイプの一部にキーワード拡張があると問題が発生します。 これは、キーワード拡張はソース・ファイルのタイプに基づいて行われるのに対し、サ ブミット後には同期は反映先ファイルのタイプに基づいてキーワードを拡張するためで あり、この場合 'p4 diff -se' により差異が報告されることになります。 この問題を修正し、この場合、'p4 resolve -at' では反映先ファイルのタイプに基づ いてキーワードを拡張するようになりました。プロキシも同様に、間違ったキーワード 拡張をキャッシュしていたため、後続する同期処理で他のクライアントにおいてキー ワード拡張がみられることがありました。(Bug #20584) #104340 ** サーバ・ロック・エラーの「ロックが失敗しました:'table1' が 'table2' の後でロッ クされました」および「ロックが失敗しました:'table' のロックはアップグレード されていません」により、サーバが異常終了しなくなりました。現在はエラーが記録さ れ、サーバ追跡が有効である場合には追跡されるようになり、サーバは終了しなくなり ました。(Bug #19220) #102859 * ** 同一の反映先ファイル・リビジョンを複数回衝突解決する場合で、その後の衝突解決が 'at/theirs を承諾' (コピー)となる場合、以前の解決が 'ignore' に変換されてい ました。当リリースでは、新しいクライアントおよび当バージョンの新しいサーバを 使用すると、マージ・システムで作業が一切失われていないことが正当に判断できた 場合、以前の解決が 'merge' に変換されることがあります。 (Bug #7130, #18896, #17100, #2540) #100946 ** 'p4 integrate' では、既に追加/ブランチ/インポート目的で作業状態にされている ファイルを反映するようになりました。その操作(追加/ブランチ/インポート)は 変わりませんが、'p4 resolve' のためのマージがスケジュールされます。これは、 編集/反映目的で作業状態にされているファイルで可能であった動作と同じです。 (Bug #12339, #13329). #100886 ** ビュー・マッピングが無効であるために発生していた 'p4 integ -b' の失敗が、より 正確に報告されます。失敗の原因が無効な havemap エントリである場合、オーバレイ・ マッピングが無効であるとの誤ったエラーが報告されなくなりました。(Bug #20653) #100847 ** 仕様での # (コメント)文字の取り扱いにおいて一貫性が強化されました。テキスト・ ブロックではコメントを採用せず、常に非テキスト・ブロックの値でコメントを採用し ます。(Bug #21172) #100814 ** 'p4 client -d -f ' では、指定されたクライアントにより作成された作業中チェ ンジリストと同時にそれに関連付けられている固定レコードを削除するようになりまし た。番号付きの作業中チェンジリストが関連付けられているクライアントを削除すると きは、常に-fオプションが必要となります。 (Bug #2146) #100613 ** クライアント名またはディポ名に / を使用できなくなりました。PERFORCE による ビューの管理方法により、名前に / が含まれているとデータの不整合が発生する場合 があります。/ は単に使用不可となりました。その他のエンティティ(ブランチ、ラベ ル、ジョブなど)では依然として / を使用できます。(Bug 5422, 7152, 12904, 21751) -------------------------------------------------------------------------- -------------------------------------------------------------------------- リリース 2006.1 2006.1 の主な新機能 ------------------- ユーザによるファイル・アクセスの追跡 - #99426 **  サーバが個々のファイル・アクセスを監査用ログファイルに記録できるよう  になりました。監査機能を有効にすると、サーバはファイル内容がクライア  ントに転送されるたびにログを記録します。したがってこのファイルは急速  に増大するため、パフォーマンスに多少影響する可能性があります。    この機能を有効にするには、次のように入力します。  % p4d -r /usr/perforce -A auditlog  出力例:  2006/05/09 09:52:45 karl@nail 127.0.0.1 diff //depot/src/x.c#1  2006/05/09 09:54:13 jim@stone 127.0.0.1 sync //depot/inc/foo.h#1  この機能は 2005.2 のリリースでは記述されていませんでしたが、現リリー  スで完全にサポートされるようになりました。 'p4 integrate' の改善 - #96464 **  'p4 integrate' は以下3つの側面で、とくに間接的な反映(反映元と反映先  との間に直接の関係がない場合)機能を改善するために修正されました。  1) 特にブランチ履歴や古いファイルが多い場合について、パフォーマンス   を改善しました。  2) 以前の反映に対する認識度を高め、マージの実行を少なくしました。  3) 「最も近い祖先」のアプローチを使用し、ベースの選択を改善すること    により、マージがより簡単になりました。以前のロジックでは、ベース    の選択時にほとんどの場合ソースファイルを使っていました。現リリー    スでは反映元、反映先、間接的に関連するファイルのあらゆるリビジョ    ンのうち、選択対象の反映先および反映元の両方と最も多くの変更を共    有するリビジョンが候補となります。    従来どおり、'p4 integrate -o' および 'p4 resolve -o' により、選択    されたベースファイルが報告されます。  (Bug #413, #17318, #17577, #17751, #18293, #20006) 2006.1のその他の新機能 ---------------------- #99037 **  'p4 integrated -b branch' でブランチ・ビューがより効率的に使用される  ようになり、スキャン対象の反映レコードの数が制限されるようになりまし  た。(Bug #20692) #96538 **  削除済みリビジョンに関する、'p4 integrate' の小規模な修正点:  'p4 integrate -Di' では、最後の追加以降のリビジョンだけではなく、  削除または再追加されたファイルの主要なリビジョンをすべて反映しようと  します。以前は'-Di'は 追加以前のベースを探していましたが、追加以降  のリビジョンのみを正当に評価していました。'p4 help integrate' で暗に  示しているとおり、'p4 integrate -d' は 'p4 integrate -Di' を意味します。 #95979 **  マージ・アルゴリズムが変更されました。解決すべき衝突の生成が少なく  なったため、自動マージ('p4 resolve -am')の成功率が高くなりました。  また、'Theirs'ファイルと'Yours'ファイルに対する同一の変更をより的確  に認識できるようになりました。これにより、追加の重複が発生する可能性  が小さくなり、マージ出力が全般的に向上しています。 #95535 *  Unicodeモードで文字セットをutf8として稼動しているクライアントにおいて、  サーバに送られるデータが正しいutf8であるかが検証され、正しくない場合  にはエラーが出力されるようになりました。新しいP4CHARSETオプションによ  り、検証を行わずに処理することも可能です。(Bug #19994) #93413 **  'monitor'カウンタはサーバが提供するモニタ・レベルを反映するようにな  りました。'0' および '1' は従来どおりの動作で、'0' はモニタ非実行、  '1'はモニタ実行コマンドを意味します。'2'は、少なくとも1つのコマンド  で実行されたアイドル・プロセスを報告します。モニタ・カウンタを変更し  た場合、p4d を再起動する必要があります。(Bug #20097, #18869, #17246) #91389 **  'p4 submit' が変更され、データベース・ロックの改善により同時実行機能  が向上しました。  #90477 **  以下の'p4'コマンドで'-m max'オプションが使用できるようになりました。  'branches'、'clients'、'diff'、'fixes'、'fstat'、'groups'、'labels'、  'opened'、'users'です。このオプションが指定されると、出力件数が'max'  件に制限されます。 #88933 **  'p4 groups' に -i オプションが追加されました。このオプションは、ユー  ザまたはグループの所属グループのリストに、サブグループを含めます。  (Bug #7335) #89305 **  新しいコマンド'p4 protects'により、特定のユーザ/パスに影響するプロ  テクション・テーブルからの行が表示されます。(Bug #2102) 2006.1/102189 (初回リリース)以降のバグ修正 ------------------------------------------ #114840 ** CPU usage has been reduced for 'p4 integrate' when it is handling indirect integrations through a large number of branches (hundreds or more). (Bug #23592). #113964 ** Concurrent 'p4 submit -c' and 'p4 change -i' of the same changelist could (under rare circumstances) leave a pending change record. Since the pending change record and the submitted change record share the same description, deleting the pending change would result in removing the committed change description. This has been fixed (Bug #19865). #113941 ** Unable to edit existing jobs which contain a TEXT field of type always or once and were set using a preset. This has been fixed (Bug #23440). #113687 ** 'p4 revert -a' could delete a local (modified) file, if the head revision was deleted and the client had been subsequently synced. This has been fixed (Bug #10201). #113339 ** 'p4 opened -a //...' was being adversely affected by the optimization in change #109212. It is now back to its previous performance. (Bug #23307) #113270 ** Files changed from type ktext to text would be stored at the server with the keywords unexpanded even if the files had been submitted with the keywords expanded. This behavior, present only in release 2006.1, has been fixed. (Bug #23258)   #112408 **   'p4 depot' will not abort when it encounters a UNC   path in the Map field so long as the path also ends in   '...'. UNC path handling in the depot form was broken   by change 93286, but it has now been fixed. (Bug #23191) #109659 * Apple file types (apple, resource, etc...) stored from a PPC or classic Mac and later synced onto an Intel Mac or vis versa would have their Finder information swapped. Fixed. However, such apple files submitted from Intel macs may need to be synced with an old client and resubmitted with a new client to fix bad Finder information. (Bug #22438) #109240 ** The internal buffer on labels for 'p4 labels filespec' has been raised from 10,000 to 1,000,000. The command works regardless of the number of labels being examined, but if under the limit the command releases an important lock (on db.domain) early, allowing other commands to run. (Bug #22460). #109212 ** 'p4 opened -a filename' has been sped up considerably for sites with a large number of client workspaces. Previously, its performance was related to the total number of client workspaces on the server, but now it is only affected by the client workspaces that have the named file(s) opened. (Bug #22288). #108308 ** Change 89167 introduced in r06.1 restricted the use of '...' wildcards in client, branch and protections maps in order to prevent excessive use of cpu and server crashes. The limit imposed by that change was determined to be too restrictive, so the limit was lifted. (Bug #21706) #108264 ** 'p4 fstat -W ' performance could be very slow if a large number of files are opened. This has been fixed (Bug #22306). #107809 ** 'p4 integrate' would sometimes skip integrations when the integration history involved a copy away from the target. This has been corrected. (Bug #22198). #105845 ** Using 'p4 diff2' with a content trigger against a pending revision could incorrectly identify files as identical when they are different. This has been fixed (Bug #21946). #105715 ** Submitting a new version of a file with a pre-2003.2 client would result in the wrong digest value being set. This has been fixed (Bug #21893). #104421 ** Classic Mac OS clients could cause the 2006.1 p4d server to exit with an error about translate paths for OS 'current'. Now the server will not. (Bug #21735) #104154 ** Memory leaks fixed. Server leaked a small amount of memory for each table opened which was modified. (Bug #21741, #21742) #104130 ** p4 integrate of files with many branches and a complex integration history could cause the server to run out of memory. Fixed to limit the extent and depth of history searching. (Bug #21624) #104074 ** The new merge code was chosing an edit over a conflict even though the "theirs" edit effectively stomped on the "yours" delete. In most cases since both "yours" and "theirs" are removing lines this is probably a safe thing to do, however for safe merging this case will now be marked as a conflict like it was in the previous release. (Bug #21595). #104039 ** Integrating a ktext file to a text file resulted in bad checksums when running 'p4 verify' using the initial 2006.1 server. Fixed. (Bug #21693) #103879 ** 'p4 changes -i' under certain conditions could exclude changelists that were integrated into the specified files. Fixed. (Bug #21587) #103651 ** When a job is updated without specifying the '-f' flag, the server will reject changing the value of any 'always' or 'once' field to a new non-null value. If these fields are either omitted or have an empty value, then the server will set the 'always' fields as specified in the presets or restore the current values for the 'once' fields. By using this method of updating jobs, an application loses the ability to have the server detect potential job clobbering and will instead have to implement its own method for preventing overwriting of valid data. (Bug #21613) #103316 ** Using an older proxy (i.e. prior to 2006.1) with a 2006.1 server could cause binary files to be treated like text files and subject to newline translations. Other cases where filetypes get changed to text also occur. Fixed. (Bug #21578) #103097 * ** The new merge code was not recognizing certain cases which were borderline conflicts. This change applies a more conservative approach, now chosing to throw those edge cases into conflict blocks. (Bug #21451, #21589) #102793 * p4 integrate with a 'cherry picked' source range might choose a bad base when a 'dirty merge' from the target to the source files is present. Fixed. Similar to bug #15656. (Bug #21513) 2006.1/101179 (ベータ版)以降のバグ修正 -------------------------------------- #102186 ** 'p4 revert -a' could incorrectly report "no file(s) opened for edit". This was introduced by change #94600 which prevents file type changes from being reverted with the '-a' flag. This has been fixed (Bug 21467). 2006.1 におけるバグ修正 ----------------------- #100015 ** 'p4 login' with a very high value for timeout would always create a new server ticket, rather than extending it. This would mean that logging in from one machine would effectively log you out of another. This has been fixed (Bug #21070). #99861 ** 'p4 integrate' no longer needlessly locks the db.revsx table (the revision table for spec depot entries), so that long running 'integrate' commands don't block spec updates. (Bug #21033) #99829 ** Shell expansion of 'p4' command line arguments no longer occurs when the command invokes a trigger. (Bug #20599) #95339 ** p4 print without the -o option can constructively use the proxy's cache now. For this to work both the server and the proxy must be upgraded. (Bug #19759) #94979 ** The error "Client 'client' can only be used from host 'host.com'" would also be generated if the hostname was case mismatched. This check has now been made case-insensitive. (Bug #4169). #94951 ** 'p4 revert' has been changed to prevent a user from reverting a file opened by different user. (Bug #1138). #94600 ** 'p4 revert -a' default behaviour has been changed so that it no longer reverts files that have been opened with a different type. (Bug #11390). #94008 ** Starting 'p4d', or performing checkpoint, journal, or recovery options on a depot with upgrade counter = 0 will generate the informational message "Perforce db files in 'P4ROOT' will be created if missing...". (Bug #20002, #9869) #93944 ** 'p4 diff -sl [ file[rev]... ]' displays unopened files with the status of 'same', 'diff', or 'missing' as each file is compared to its revision in the depot. When used in conjunction with '-f', this command may show this diff summary for all files in the file argument, including opened files. (Bug #14864) #93514 ** The Spec depot now handles concurrency correctly. Multiple changes to a spec occurring at the same time should no longer result in missing revisions. (Bug #18555) #93503 * ** The file types "text+C" and "text+F" are now treated by 'p4 diff2', 'p4 resolve' using merge, and 'p4 describe' as text files. Now files of these types can be compared and merged. (Bug #20111) #93286 ** 'p4 depot' will not save a depot spec unless the Map entry contains a trailing set of ellipses. The trailing ellipses is the only wildcard allowed. (Bug #18580, #19128) #90843 ** jobspec fields which are specified as 'always' will have the read-only nature of the field enforced by the server unless the -f flag is used. Since the server will populate these fields upon commit, any user data will be lost. This behavior can be used to prevent most job clobbering situations by including an always field of type date (e.g., a field for LastModifiedDate). (Bug #14813) #90571 ** 'p4 labels file[revrange]' can block other Perforce commands that need to update the db.domain table. This problem has been fixed by early release of this table lock. (Bug #19566). #90261 * p4 print -o would fail when the result file specified is a device such as /dev/null or /dev/fd/1. (Bug #19649). #89366 ** Wildcards (..., *, or %%x) are no longer allowed to be right next to each other in file arguments or views. Putting them together serves no useful purpose and consumes CPU as the server tries to deal with the combinations. (Bug #11188). #89167 ** Excessive use of ... wildcards in client or branch mappings (more than a few mapping lines with more than one ... in them) could cause the server to consume a lot of memory and time trying to work out all the possibilities. Generally this was not the intent of the user. Now the server has an internal limit and returns an error rather than wasting time when the ... wildcard handling gets excessive. (Bug #18182). リリース 2005.2 2005.2 の主な新機能 ------------------- パフォーマンスの改善 よりパフォーマンスを向上させるため、いくつかの変更が 2005.2 サーバに対 して行われました。 最新リビジョン操作の最適化 - #79472 ** このリリースでは新規のテーブル db.revdx が追加されました。これを もう1つの最新リビジョンテーブル db.revhx (2005.1) と併用することにより  'p4 sync' などのコマンドでより速く最新リビジョンにアクセスできる  ようになりました。この改良により、特にファイルのリビジョン数が多い  場合に、計算フェーズ(ロックが発生)が短縮されます。 'integ'コマンドのスピード向上 - #77216 **  'p4 integ'のパフォーマンスは、更新を一括で行い、内部キャッシュの利用  およびロック要求の削減が実現したことにより向上しました。使用方法により、  パフォーマンスは以前のバージョンより最大で 3 倍ほど速くなります。 同期中の db.working/db.resolve の解放の早期化 - #84071, #85678 ** 'p4 sync' コマンドを長時間実行(計算フェーズ)しても、ほとんどの場合 'p4 add/delete/edit' または 'p4 revert' の実行を妨げなくなりました。 (Bug #14146) サーバ・パフォーマンスの追跡 - #86623 ** p4d サーバにより、パフォーマンス上の問題を特定するための診断結果が生成 されるようになりました。この新機能はデフォルトでオンになっていますが、 '-vtrack=x' フラグによりオフにしたり調整を行うことができます。 リソース使用量(とくに CPU、経過時間、データベース入出力、ネットワーク 入出力)に対する特定のしきい値を超えるユーザ・コマンドは、自動的に サーバ・エラー・ログ P4LOGに記録されます。 -vtrack=x で設定可能な レベルは以下の通りです。 0 追跡をオフにする 1 すべてのコマンドを追跡 2 10 ユーザ未満のサーバの超過使用量を追跡 3 100 ユーザ未満のサーバの超過使用量を追跡 4 1000 ユーザ未満のサーバの超過使用量を追跡 5 1000 ユーザを超えるサーバの超過使用量を追跡 -vtrack がサーバ・コマンドラインで指定されず、P4DEBUG にも設定されて いない場合、追跡レベルはサーバ・ライセンス・ファイルに記載されたユーザ の数から計算されます。 追跡出力の正確なフォーマットは記載しません。これは変更されることがあり ます。 スペック・ディポによる他コマンド実行妨害の軽減 - #86495 ** 'スペック'・ディポのリビジョン・エントリは別のデータベース・ファイル db.revsx に格納されるようになりました。これにより長時間のレポート・ コマンド実行により、ユーザ、クライアント、ブランチなどのフォームへ の更新が妨害されなくなりました。 (Bug #18939) @changelist の特殊処理 - #85130 ** 構文 '//path/file@change1,@somethingelse' は、通常の多くの場合において 処理が改善されました。以前は、サーバはコード化された規則に基づき、チェ ンジリスト番号またはファイル・パスにより検索を行っていました。 これはうまく機能せず、 '//singlefile@1,@date' および '//...@5000,5001' とすると誤った検索が開始されており、ユーザが間違った構文でサーバ検索 を行うままとなっていました。現在は調整され、サーバはチェンジ番号により 検索を行いますが、極端に非効率(リビジョンの80%以上がパスに一致しない) であると判断された場合、パスによる検索に切り替えられます。(Bug #18689) 多くのファイルが作業状態となっているクライアントのスピード向上 - #80624 ** 2002.1 および 2005.1 では特殊な最適化が行われ、db.have テーブルの引数に ディポ・ファイルを指定してアクセスした際の走査が回避されています(db.h ave テーブルのキーがクライアント・ファイルに記述されています)。この 最適化が db.working テーブルにも拡張され(同様にクライアント・ ファイルにキー記述)、少数のファイルを参照する際に大規模な走査を 行う必要がなくなりました。 また、この最適化は「同期している」("mapState 1" である)クライア ント・ビューおよび db.have テーブルに依存しなくなりました。 クライアント・ビューは 2005.2 へのアップグレードの際、クライアント・ ビューの変更の都度、または mapState が解除されるたびに増大します。 (Bug #8348, #8929, #8930, #8931, #13439, #14006, #14500, #16985) トリガーの外部認証 - #83081 ** 2004.2 でのチケット・ベース認証サポートを基に、外部認証サポートが構築 されました。ユーザが 'p4 login' の要求を発行すると、auth-check タイプの 最初のトリガが実行されます。このときユーザが指定したパスワードがトリガ・ コマンドの標準入力となります。トリガが正常に認証を行うと、Perforce チ ケットが発行されます。同様に、ユーザが 'p4 passwd' の要求を発行すると、 auth-set タイプの最初のトリガが実行され、(古いパスワードが auth-check トリガにより認証された後)新しいパスワードが設定されます。ユーザ名は、 %user% としてトリガ・コマンドラインに渡すことができます。 (Bug #2398, #6730, #15417) UTF-16 のサポート - #85454 * サーバが unicode モードの場合、クライアントは P4CHARSET の設定として UTF-16 をサポートします。詳細は、i18nnotes.txt を参照してください。 (Bug #1536) 2005.2のその他の新機能 ---------------------- #86443 ** オーバーレイ・マッピングの使用時、オーバーレイにファイルを追加する際に 非オーバーレイ・マッピングに削除されたファイルが存在すると、 ファイル名変更済みのエラーが発生していました。これは修正されました。 (Bug #11924) #86149 ** 特殊な'スペック'タイプのディポに保存されたジョブの内容が、'p4 fix'、 'p4 change'、または 'p4 submit'により変更された場合、そのジョブは 自動的に更新されるようになりました。自動的に変更される主なフィールドは 'Status:' および 'Date:' です。以前は、'スペック'ディポは'p4 job' により直接編集される場合にのみ更新されていました。(Bug #18030) #85670 * ファイル転送時の文字セット翻訳の失敗において、初回の失敗付近の 行番号が報告されるようになりました。また、ファイルの初めから8192 バイトを 調べることにより、unicode 対テキストであるか、unicode 対バイナリであるか 診断されるようになりました。(Bug #15369) #83894 ** 「常に(always)」更新されるようマークが付けられたジョブ・フィールドは、 'p4 fix' または 'p4 changelist' コマンドにより解決策が追加または削除さ れるとき、またはジョブに影響するチェンジリストが 'p4 submit' によりサ ブミットされるときに更新されるようになりました。これは 'p4 job' による ジョブの直接更新に追加されたものです。以前は(明確に記述されたことはあ りませんが)、'always' のフィールドは'p4 fix'(コミット済みチェンジリス トで)、または 'p4 submit' によるステータス変更時にのみ更新されていました。 #83599 ** 'p4 triggers' でのトリガ名は、目的を明確化するため名称が変更されました。 古いトリガ名の 'submit'、'content'、'commit'、'in'、'out'、'save'、 'delete' も依然として認識されますが、新しい名称である 'change-submit'、 'change-content'、'change-commit'、'form-in'、'form-out'、 'form-save'、'form-delete' を使用するようにしてください。 #82165 ** 'p4 monitor show -e' およびサーバ・ログ出力において、プログラム名に バージョン文字列が追加表示されるようになりました。クライアントの バージョン文字列がサーバでは有効でない場合(2005.2+ ClientApi:: SetVersion() により設定)、バージョン文字列のデフォルトは protocolClient の値となります。(Bug #15773) #80660 ** 'p4 opened -a file' および 'p4 opened -c change' が最適化され、 db.working テーブル全体が走査されなくなりました。 (Bug #16132) #80493 ** 新しい 'p4 annotate -i' フラグは、'p4 filelog -i' と 同様にブランチに対応します。(Bug #15451) #78928 * ** Unicode タイプのファイルがディポにサブミットされるとき、 最初に UTF-8 以外の文字セットには翻訳できないByte-Order-Mark (BOM) が付けられることがありました。そのようなファイルも 最初のByte-Order-Mark を無視して他の文字セットに同期される ようになりました。そのようなファイルに対して p4 diff -se または -sa を実行した場合、差異が生じることがあります。 (Bug #17244) #77727 ** 新しいオプション、'p4 add/edit/delete -n' により、ファイルを 実際に作業状態にすることなく、表示のみ行うことができます。 (Bug #8946) #76458 ** 'p4 sync' に '-k' オプションを使用できるようになりました。 このファイル保存(KEEP)オプションにより、サーバが更新され 要求したファイルが既にクライアント・ワークスペースにあるように 表示されます。このフラグを使用することにより、ファイルがクライアント・ ワークスペースに移動しないようにできます。 #76292 ** 'p4 revert' に '-k' オプションを使用できるようになりました。 このファイル保存(KEEP)オプションにより、サーバで管理される、ファイ ルを作業状態にする操作がクリアされます。ただしクライアント・ワーク スペースにあるファイルは変更されません。(Bug #16275) #75760 * 3種類のロシア語/キリル文字の文字セットが追加されました。それらは 'koi8-r'、'cp1251' (Windows コード・ページ1251)、および 'iso8859-5' です。 (Bug #8996) #73787 ** 'p4 annotate' に、'p4 diff' などで使用されていた -db および -dw のフラグが使用できるようになりました。これらは空白の変更を 無視、または空白をすべて無視します。(Bug #16286) 2005.2/88704 (ベータ版)以降のバグ修正 ------------------------------------- #101271 ** Memory leak fixed. A server running with spec depot enabled or additional local depots would leak memory. Typically this would be 20 bytes for each additional depot multiplied by the number of file arguments. (Bug 21127). #99156 ** Servers built with the SmartHeap memory manager (linux, windows), could require input from the user when the server was unable to obtain more memory. On linux this could happen when the server was holding locks, which (eventually) brings the server to a halt. The default behaviour has been changed so that the server does not prompt when out of memory. (Bug #20905). #94339 ** 'p4 changes @changelist' could be slower in 2005.2 than it was in 2005.1 due to an optimization intended to speed up changelist ranges (@changelist,changelist). The optimization has been tuned to be no slower than 2005.1. (Bug #20192). #92200 *** The proxy would not properly expand the Date and DateTime keywords for file submitted with modtimes during daylight savings times while the submit actually happened not during daylight savings or vis versa. Fixed. (Bug #19757)   #91541 * Temporary files were sometimes left in client workspaces by MacOS X clients. Fixed. (Bug #19576) #90419 * ** 'p4 -G jobs' lost the 'specdef' field when tagged output for forms was implemented in 2005.2. Now this field has been restored. (Bug #19600)   #90017 **     'p4 submit' において不正なファイル、またはファイル更新日付のない     ファイルを使用したときに、ファイルが破壊されることはなくなりました。     代わりに、エラーが出力され、サブミットが失敗します。(Bug #16559、     #18645) #89981 * ** Add new environment variables P4DIFFUNICODE and P4MERGEUNICODE which are like P4DIFF and P4MERGE for invoking external tools from the command line except that when the file is of type unicode and the server is in unicode mode, the character set is passed as an argument to the commands those variables point to. This can allow p4merge to be invoked from the p4 command line tool on UTF-16 files successfully. (Bug #19465) #89793 * Arguments to commands defined in P4MERGE or P4DIFF will no longer cause the commands to fail to execute. This behavior was due to a short-lived bug only in the beta release, and has now been fixed. (Bug #19529) #89471 'p4 edit/delete/add' of a file in a spec depot should not be allowed, this has been fixed. (Bug #19463) #89406 Deleting a form when a spec depot has been enabled will result in a server crash, this has been fixed. (Bug 19455) 2005.2 におけるバグ修正 ー----------------------- #88299 ** サーバはスペック・ディポ・ファイルのファイルサイズまたは要約を更新 しませんでした。これは修正されました。従来のファイルは'p4 verify -u' コマンドにより更新することができます。(Bug #19044) #86806 ** ラベルまたはクライアント名にワイルドカード・文字シーケンスの"%%" が含まれていると、'p4 label' または 'p4 client' によりサーバがク ラッシュすることがありました。この文字シーケンスは新規のラベル、 クライアント、ブランチ、ディポの名前に使用できなくなりました。この 無効な文字シーケンスを名前に含むエンティティにもアクセスは可能です。 (Bug #17563) #86505 ** p4 submit -r により、ブランチされたファイルが編集目的で作業状態にされ ていると、読み取り専用のままにされていました。 そのようなファイルは読み取り/書き込み可能になりました。 p4 submit -r は、サブミット後にクライアントに残っているサブミット 済みファイルを、作業状態のままにします。(Bug #15937, #17684, #18435) #86189 * ** p4 resolve により通常の挿入が重複することがありました。これは修正 されました。(Bug #18844) #85995 * 'p4 -x ' により、128個めの引数より後の引数処理が二 番目以降のコマンドで行われると、未知のクライアントがサーバ・ロ グ・ファイルに報告されていました。これは修正されました。(Bug #18780) #85795 ** リモートのディポからインポートすると、使用できない db.rev アーカイ ブ・ファイルが作成されることがありました。これにより複数回反映を行い、 最後に 無視されたローカル・ディポ・ファイルを反映する必要がありました。 その後新規にサブミットされたリビジョンにアクセスすると、 "//remotedepot/filename をアーカイブにマッピングすることが できません"というエラーが発生していました。これは修正されました。 (Bug #17823) #85674 ** integrate コマンドにおいて、反映元と反映先との間に複数の間接参照 レベルがあると、削除を反映する必要があることが見過ごされることが ありました。これは修正されました。(Bug #18652) #85630 ** ラベル、"*" ワイルドカード、多くのサブディレクトリを含むディレクトリ が関わる処理のパフォーマンス低下が解決されました。(Bug #18819) #85445 ** 'p4 -R' は、Ruby 1.8.x からの整列した入力に対応するように なりました。(Bug #18053, #18433) #84221 ** リモート・ディポに対する @change,change のリビジョン指定が、再び機能する ようになりました。長期にわたり、リモート・ディポ・ファイルに対してリビ ジョン構文でチェンジ番号を使用すると、リモート・ファイルに対するローカ ル・チェンジ・インデックスが使用されていました。リモート・ファイルはそれ 自身のチェンジ番号を使用してフィルタリングされるようになりました。 (Bug #13451) #84221 ** pattern@1,@date のリビジョン指定においてメモリの使用量が大幅に少なく なりました。変更 1 以降のすべてのファイルではなく、'pattern'に一致 するファイルの数に関連付けられるようになったためです。(Bug #18441) #81300 ** 'p4 dirs' に非常に長い引数(>2048 バイト) が指定されると、サーバが クラッシュすることがありました。これは修正されました。(Bug #17199) #80547 ** 'p4 logout -a' により、サーバに保存されたチケットと同様に クライアントに保存されたチケットも削除されるようになりました。 (Bug #17798). #80127 ** ユーザが有効なチケットを持っていれば、それが期限切れであっても 'p4 logout' を実行できるようになりました。以前は、まず 'p4 login' を実行しなければなりませんでした。(Bug #17727) #76684 ** 'p4 fstat' に -O および -R フラグを複数指定できるようになりました。 (Bug #16957) -------------------------------------------------------------------------- -------------------------------------------------------------------------- リリース 2005.1. 2005.1 の主な新機能 ------------------- パフォーマンスの改善 よりパフォーマンスを向上させるため、いくつかの変更が 2005.1 サーバに対 して行われました。 'dirs'コマンドのスピード向上 - #69248 ** 'dirs'コマンドのパフォーマンスは、もはや、最新リビジョンが削除された ファイルの数に影響されなくなりました。'dirs'コマンドは P4V、P4Winなど の GUI ツールによって使用されているため、最新リビジョンが削除された ファイルのリポジトリの一部の閲覧が速くなりました。このスピードの向上 は db.revhxテーブルを使用することによります。(Bug #7068) 'obliterate'コマンドのスピード向上 - #72594 ** 'p4 obliterate'の固定オーバーヘッドを軽減するために、いくつかの変更が 行われました。オーバーヘッドは、クライアントとラベルのサイズではなく、 クライアントとラベルの数に関係するようになりました。また、怠惰なコピ ーを制御することでも改善されました。多くの怠惰なコピーの原因となって いたリビジョンのオブリテレートは、もはやバージョン化ファイルのツリー の中に多くのリビジョンを作らなくなりました。このスピードの向上は新し いテーブルである db.archive を使用することと、MapState の簡略化による ものです。(下記を参照のこと) (Bug #15047) Btree の 消極的な再構成 - #68043 ** db.*テーブルが更新される際に、サーバは隣接するページ全体にわたって、 ソート順を保守するのに必要なテーブルの一部を再構成します。これらの消 極的な再構成によって、物理的なディスクヘッドの動きが軽減され、 readahead がより効果的になるため、テーブルの一部をスキャニングすると きにパフォーマンスがより改善されます。この特長は、パフォーマンスを改 善するために行われる周期的なチェックポイントからの db.* の再生成の必 要性を軽減します。しかし、新しい連続ページをアロケートすることにより、 いくつかの db.* テーブルのサイズが大きくなります。 MapStateの簡略化 - #72631 ** いくつかのコマンド ('p4 sync', 'p4 have', 'p4 fstat') でディポ・シン タックスを使用することにより、ある場合において大幅にスピードが向上し ます。以前は、これらのコマンドは、クライアント ・ ワークスペースが現在 のクライアント ・ ビューに同期されているときだけ早く実行されていました。 この制限はもはや適用されなくなりました。クライアント・ビューを切り替 えたあとの最初のスキャン結果は、クライアントがすでに同期されているか どうかに依存しません。 スペック・ディポ - #69793 ** 'スペック'というタイプのディポは、すべてのフォーム(ブランチ、チェン ジ、クライアント、ディポ、グループ、ジョブ、ジョブスペック、プロテク ション、トリガ、typemap、ユーザ)を特別な読み取り専用ファイルとして アーカイブします。これらのファイル名は //specdepot/type/name[suffix] となります;サフィックスは状況により、ディポ ・ フォームの中の'Suffix:' フィールドとして与えられます。アーカイブされたフォームは、どんなファ イルとしてもアクセスできます。'フォーム固有のコマンド -i オプション' (e.g. p4 client -i) を使用する以外は、どのフォームを使用するのにも、 特別な条件はありません。アクセス時間、(チェンジリストの中の)作業状 態のファイル、(ジョブの)ステータスなど、フォームの自動的なアップデ ートによって、保存されているフォームが変更されることはありません: フォームの変更は、通常のフォーム編集コマンドによってのみ行われます。 スペック ・ ディポは 2003.2 リリースの際にドキュメント化されていない機 能として紹介されましたが、現在はフル ・ サポートです。 (Bug #250) 部分ファイルタイプ - #68575 ** 'p4 add'、 'p4 edit'、 'p4 reopen'、'p4 typemap'で与えられるファイル タイプは、 '+ 修飾子'をもつだけの部分ファイルタイプも可能になりました。 部分ファイルタイプは、デフォルトのファイルタイプを変更するというより 置き換えるものです。たとえば、テキストファイルとバイナリファイルが、 '+l'の部分ファイルタイプがタイプマップ入力されたリポジトリの中のある 場所に追加された場合、テキストファイルのファイルタイプは'text+l'とな り、バイナリファイルのファイルタイプは'binary+l'となります。より詳細 な情報は、'p4 help filetypes'を参照してください。 (Bug #594, #4003, #6562, #6742) deleteトリガ - #68258 ** 2004.2 で紹介されたスペックトリガの補足として、新たに'delete'トリガが 加わりました。このトリガはスペックを削除するまえに実行されます。delete トリガは、スペックが削除されるときの制限事項として使用されます。たと えば、権限を許可されていないユーザによってジョブを削除されるのを防ぐ ために使用できます。(Bug #15235) -------------------------------------------------------------------------- 2005.1/79540 (初回リリース) 以降修正されたバグ #89300 ** Perforce サーバをモニタを有効にして起動していると、マルチスレッド・ クライアントが同一サーバへの接続において要求を重複して発行するという 問題が発生することがありました。ある条件下ではこれがサーバ・クラッ シュの原因となることがありました。これは修正されました。(Bug #19381) #86943 ** まれに、'挿入失敗'によりbtree の消極的な再構成が失敗することがあり ました。これは修正されました。(Bug #18960) #86558 ** AIX 5.3 サーバ・プラットフォームでは、OS実装上の問題により mmap (メモリ マップ) ファイル・アクセスが無効になりました。(Bug #18951) #82815 ** 2.6.11 より古いバージョンのLinuxで稼動しているサーバにおいて、 散発的にゾンビ・プロセスが生じることがありました。これはLinux カーネ ルのバグですが、カーネルが修正されたリリースを取得できないお客様は この変更により問題を回避することができます。(Bug #17328) #82100 ** 'スペック'ディポへのフォームのアーカイブ失敗がクライアント・アプリ ケーションに報告されていませんでした。これは修正されました。(Bug #18091) #81216 ** バグ修正 #80169(db ファイルの更新)が、一回ではなくデータベースへ のアクセスの都度実行されてしまうことがありました。この更新により問題 は発生しないものの、わずかにパフォーマンスへの影響がありました。これ は修正されました。(Bug #17960) #81207 ** 要約がすでに計算され保存済みである場合、'p4 verify -q' によりアーカ イブ・ファイルがないことが検出されませんでした。これは修正されました。 (Bug #17909) #80631 * ** p4 resolve またはマージツールにおいて 'Theirsを承諾'を選択すると、 サーバのtheirsファイルのバージョンと一致しないファイルが残されること がありました。また自動マージが正しく行われないことがありました。これ は修正されました。(Bug #17752) #80628 ** 前回のリリースの 2004.2 より古いリリースから 2005.1 にアップグレードを 行うと、ファイルサイズが間違ってレポートされることがありました (p4v, p4ftp)。これは修正されました。(Bug #17822) #80169 ** サーバのDBファイルが最初、2001.1 より前のバージョンの p4d で作成され、 チェックポイントがサーバ・バージョン2001.1以降で復元されたことがない 場合、2005.1(今回のリリース) にアップグレードするとデータベース更新 の問題が発生します。これは修正されました。修正されたサーバの起動後は、 チェックポイントの復元を行わずに古い2005.1サーバを起動することはでき ません。(Bug #17732) #79941 ** ファイルがユーザがアクセス権限を持っているファイルにブランチされている 場合、p4 filelog -i によりユーザが権限を持っていないファイルの詳細が表 示されることがありました。filelog -i ではユーザが調べる権限をもっていない 先祖ファイルを参照しなくなりました。(Bug #17691) 2005.1のその他の新機能 ---------------------- #72238 ** 'p4 verify'は、新たに'-m maxRevs'オプションが使用できるようになりま した。これは、ベリファイするリビジョンの数を制限するオプションです。 このオプションの使用は、個々のリビジョンが処理される前に、何回かの繰 り返しが必要なときがあります。 チェンジ #70719 により、新しくサブミットされたファイルは、サーバによ って修正された長さになります。以前のリビジョンは、'-u'オプションもし くは '-v'オプションと一緒にベリファイが実行されたときに、長さは決まっ ていました。これは、アップグレード後、一番最初にメタ ・ データが更新さ れるとき、'-m'オプションを使用するためその更新に非常に時間がかかって しまうような、大きなリポジトリにはお勧めです。 #71026 ** 'p4 filelog'は、新たに'-L'オプションが使用できるようになりました。こ のオプションは、切り捨てられた 250 文字の長いチェンジリストの Description を作成します。 (Bug #15880). #70950 ** 'p4 changes'は新たに'-L'オプションが使用できるようになりました。この オプションは、切り捨てられた 250 文字の長いチェンジリストの Description を作成します。 (Bug #15791). #70906 * ticket ファイルの場所が設定できるようになりました。ユーザは環境変数 P4TICKETS で設定された'p4 login'とその後の接続操作により、ファイルの 場所を定義することができます。この変数は他の Perforce 変数と同様、 'p4 set'と通じて、P4CONFIG ファイルもしくは NT レジストリとしてコマ ンドプロンプトから設定できます。 e.g setenv P4TICKETS /secure/myname/ticketfile (UNIX csh) p4 set P4TICKETS=c:\secure\myname\ticketfile.txt (NT) (Bug #14912) #70719 ** サーバはメタデータの中のファイルサイズを保守できるようになりました。 これにより、'p4 fstat'オプション'-Ol がより高速になりました。 (Bug #15844). #70543 ** 98.2 および 99.1 のサーバのリモート・ディポへのアクセスはできなくな りました。 #70419 ** 'p4 fstat'は新たに'-Of'オプションが使用できるようになりました。この オプションを使用すると、対象となったファイルの全てのリビジョンが表示 されます。(Bug #15810). #70345 ** 次のコマンドはシノニム(別称)を持つようになりました: シノニム コマンド -------- ------- changelist change changelists changes workspace client workspaces clients どちらの名前でも受け付けられます。しかし、エラーやフォーム・フィール ドは、実行時の名前に関係なく、オリジナルの名前を参照してください。 #69880 ** 'p4 fstat'は出力フィールドに'desc' (チェンジの description)を与えます。 このフィールドは、与えられたチェンジリスト番号に影響を受けたファイル を出力するためのオプションが特定されたときだけ出力されます。 (Bug #15693). #69803 ** 'p4 opened'は新たに'-C client'オプションが使用できるようになりました。 これは、特定のクライアントによってオープンされているファイルに出力を 制限します。 (Bug #15676) #69639 ** 'p4 fstat'は、出力フィールドのリストに'otherChange#'を加えるようにな りました。このフィールドはそのファイルがオープンのときだけ出力されま す。(Bug #15599) #68917 ** 'p4 fstat'は出力フィールドのリストに'digest'を加えるようになりました。 このフィールドは'-Ol'オプションが使用されたときだけ出力されます。 (Bug #15484) 2005.1 におけるバグ修正 ----------------------- #79498 ** Application-licensed servers cannot be accessed remotely, this has been fixed (Bug #14978). #79322 ** For certain client views 'p4 labelsync' could repeatedly delete and add the same file each time its executed. (Bug #16613). #78873 ** On some platforms (linux) with 'monitor' enabled the command 'p4 admin stop' could hang the server. This has been fixed (Bug #13509). #77879 ** Indirect Integrations involving recently branched files which are then deleted via integration might stop propagating the delete via indirect integrations. (Bug #17233) #75719 ** Under certain circumstances and on particular server platforms (Solaris) the 'Options' field of a Perforce client could get corrupted when being displayed. This has been fixed (Bug #16806). #75711 ** 'p4 -Rc -e #changelist' could take a long time if the client view prevented any of the files in the changelist from being mapped. This has been fixed (Bug #16482). #74983 ** 'p4 job Job' against an NT server would override the same storage used by 'p4 jobspec'. (Bug #16300). #74847 ** 'p4 tag' would create labels with uninitialized access and modification times, this has been fixed. (Bug #14524). #74432 ** Indirect integration credit was missed in certain combinations of a copy from and a branch from a common ancestor. (Bug #16478) #74228 ** 'p4 fstat -W' has been speeded up by removing the redundant db.have client file scan. (Bug #16031). #73742 ** 'p4 fstat -e #changelist -W' on some platforms would fail to return the files opened in that changelist. This has been fixed (Bug #16342). #73518 ** The filetype option 'apple+k' would fail in previous versions with the error "AppleSingle/Double corrupted". This failure was due to an incompatability between the apple resource fork code and the RCS keyword substitution code. This combination is prohibited and is now rejected when trying to set it rather than after submit. (Bug #16238). #72937 ** Indirect integrations might schedule deletes without the -Ds or -d flags when such flags would be needed. Fixed. (Bug #15917) #72512 ** Revisions for a 'group' stored in the spec depot did not contain all the users added to that group only the last ones added in the last update. This has been fixed (Bug #15583). #72406 * On Windows clients operating with character set UTF8 use Unicode Windows APIs to get user related environment variables and allow Perforce variables to supply these enviroment values. (Bug #15933) #71608 ** Indirect Integration credit was not given for all paths when more than one credit path shares intermediate credit paths indirectly resulting in some unnecessary integrates being scheduled or base files for merging which are older than needed. Fixed. (Bug #15942) #71169 ** The 'Timeout' field which can be set by 'p4 group' was not allowing a value of 0 (no timeout), this has been fixed. (Bug #15712). #70975 ** Starting p4d as a service on NT would fail if upper case was used for the executable name. Fixed. (Bug #11839) #70890 ** 'p4 integ' would schedule integrations which are not needed when the source was a copy integration from a third file which was edited into the target. (Bug #15719) #69841 ** A trigger on 'p4 change' wouldn't fire on 'p4 change -s', which is used by p4win. Now it does. (Bug #15602). #68886 ** 'p4 login' IP based tickets would not work against a central authentication server, this has been fixed. (Bug #15469). #67888 ** If a post-submit trigger fails then the server can incorrectly issue the message "Submit validation failed -- fix problems then use 'p4 submit -c '". If no ktext files are refreshed during the submit then no error message is seen at all. This change fixes both these problems. (Bug #15265) #67042 ** p4 sync #none no longer changes permissions on symlink target files (Mac OS X and Darwin only). (Bug #15175) -------------------------------------------------------------------------- -------------------------------------------------------------------------- リリース 2004.2 2004年8月 2004.2 のメジャーな新機能 ------------------------- セキュリティ・レベル(認証およびセキュリティ・レベル) ほとんどの変更は従来システム上ですでにビルドされており、その従来シス テムは、適切に運用されていればほとんどの開発環境において十分なプロテ クションを提供していました。しかしながらこのシステムは、パスワードの 入力や強要をサポートしておらず、安全でない操作が実行できる状態でした。 2004.2 では、PERFORCE サーバのセキュリティ・レベルというコンセプトが 盛り込まれました。基本的に、より高いレベルは、強制のレベルが強いこと になります。場合によっては、単純に高いセキュリティ・レベルを必要とし ないサイトでは、レベルを強くし過ぎることによって、運用に制約をかけ過 ぎることになります。 この新しいセキュリティ機能では、データの暗号化は行いません。これまで のリリース同様、信頼性の低いネットワークを通じたアクセスには、SSH や VPN の利用をお勧めします。 セキュリティ・レベルを設定: 下位互換を持たせるため、セキュリティのデフォルト設定では、以前のバー ジョンと同じ認証を行います。PERFORCE のスーパーユーザが新しいカウンタ 'security' を設定することによって、サーバにセキュリティ・レベルを設定 します。 例: p4 counter -f security 1 (サーバの再起動が必要です。) カウンタ security の取り得る値とその動作は、次のとおりです。 security 機能 0(未設定)* 'p4 login' サポート 1 * 2003.2 以上のクライアントは、パスワードを強要します。 * 2003.2 以上のクライアントは、strong passwords を必要とし ます。 2 * 'p4 user' を通じてパスワードを変更することはできません。 * 'p4 passwd -O -P' を通じてパスワードを変更することはでき ません。 * 2003.2 より前のクライアントは、パスワードを設定すること はできません。 * 2003.2 より前のクライアントは、login を使うことはできま せん。 * 検証されていない strength passwords は、変更されなければ なりません。 * パスワードは今後、Windows レジストリに保持されたり、 Windows レジストリから取り出されたりしません。 3 * 'p4 login' のチケットがサーバに接続するための唯一の方法 であり、パスワードはもはや受け付けられません。 新しいlogin/logoutコマンドがチケットを通じてPERFORCEのアクセスを提供 新しい 'p4 login' コマンドの保証メカニズムによって、ユーザは PERFORCE への承認されたコネクションを確立します。'p4 logout' コマンドを実行す ることによって、セッションは終了します。使用方法については、 'p4 logout' をご覧ください。 'p4 group' における新しいフィールド 'Timeout' 'p4 group' は 'Timeout' フィールドを持ち、ユーザのグループに対して設 定されるログイン時間のデフォルト値(12時間)を変更するために使われま す。この値は、サーバから発行されたチケットが有効な秒数で表します。 新しいトリガのサポート(サブミット中、サブミット後およびフォーム) 'p4 triggers' は、従来のサブミット前トリガに加え、サブミット中および サブミット後トリガをサポートするようになりました。サブミット中トリガ はファイル転送の後にアクションを起こし、特別なリビジョン指定 @=change を通じて、ファイルの内容にアクセスするために限定されたコマンド・セッ トを使います。ここで、change は作業中チェンジリスト番号です。サブミッ ト後トリガは、サブミットの内部処理が完了した後にアクションを起こしま すので、サブミット操作を中断することはできません。 (Bug #1651, #1929, #11861) 加えて、'p4 triggers' は('p4 branch' や 'p4 user' のような)すべての フォームにおいてトリガをサポートします。'out'、'in'、'save' という 3 種類のトリガが利用可能です。'out' トリガはフォームが作成されたときに 起動し、'in' トリガはフォームは保存されたがまだサーバに解釈されていな い段階で起動します。'out' および 'in' は共に、フォームを書き換えるこ とができます。'save' トリガは、サーバによってフォームの内容が解釈/確 認された後に実行されますので、フォームを書き換えることはできません。 (Bug #796, #1651, #9738, #10536) 新しい間接的な反映のデフォルト 'p4 integrate' は、どのファイルが関連し、どの変更を反映するのかを決定 する際、中間ファイルを通じて、常に間接的な反映を考慮するようになりま した。すべての反映において間接的な反映が考慮されますので、ブランチ仕 様における直接/間接のオプションは削除されました。関連して 'p4 integrate' は、反映元ファイルでも反映先ファイルでもない共通祖先から、 衝突解決(マージ)のためのベースを選択する可能性があります。 新しい衝突解決のロジック 'p4 resolve' における衝突解決が変更になりました。新しいロジックでは、 変更の共通性をより複雑に検出する際、衝突している領域を減らします。 文字 @#%* を含むパスをディポに登録できるようになりました これまで、ディポへ登録するファイル名の中に特殊文字 "@#%*" を含めるこ とはできず、エラーとなっていました。 今回のリリースで、'p4 add -f' を実行することによって、これらの特殊文 字をファイル・パスの一部に使用できるようになりました。'-f' オプション を指定しないと、ファイル名にワイルドカードを含んでいるときにはエラー となります。 これらのファイルが追加されると、単に定型のフォーマットで参照されるよ うになります。例えば 'p4 add foo#bar' を実行すると、フォーマットされ た名前 'foo%23bar' 配下のファイルにサブミットされます。'#' の部分は、 その文字の ASCII 8進コードである '%23' に変換されます。したがって、既 にサブミットされたそのファイルを編集するためのシンタックスは、'p4 edit foo%23bar' となります。'p4 have' や 'p4 fstat' のようなコマンドは、フ ォーマットされたファイル名とローカル(ファイルシステム)のファイル名 の両方を出力します。もちろんこれらのファイル名は、クライアント・マシ ンへ同期したときには、オリジナルのサブミットされたときのファイルに変 換されます。 この変更に伴い、ビューの中でファイルパスを再構成させるときに使用され るワイルドカード %d は、%%d に変更されますので注意してください。 新しい tag コマンドによりラベルの割り当てが簡単になります 'p4 tag' コマンドは、より高度な 'p4 labelsync' コマンドと文法的に似て いますが、クライアント仕様を使わずにファイルへのラベル付けを可能にし ます。詳しくは、'p4 help tag' をご覧ください。(Bug #9903) 2004.2 のマイナーな新機能 ------------------------- #58026** 'p4 fstat' コマンドは、2つの新しいオプションを持ちます。'-O' オプショ ンは、通常省略される追加情報を要求するために使用します。'-R' オプショ ンは、一定の条件に応じて出力を制限するために使用します。fstat の以前 のオプションの多くは、これらの新しいオプションに取り込まれました。詳 しくは、'p4 help fstat' をご覧ください。(Bug #13343) #56674 ** 'p4 integrate -Di' を実行することによって、反映元ファイルにおける最新 add より前のリビジョンであっても、それをファイル・マージのためのベー ス・ファイルとすることができるようになります。すなわち、反映元ファイ ルが削除された後に再追加(add または branch を通じて)されると、その 再追加より前のリビジョンであっても、反映時のベースになり得るというこ とです。これは、ファイルが削除後に再追加された際、その削除の前後両方 に、まだ反映すべき内容を持つようなファイルをサポートすることを目的と します。(Bug #11929) #56035 ** 'p4 submit -r' を実行することによって、反映されたファイルを再び作業状 態にすることができるようになりました。(Bug #13380) #56034 ** 'p4 integrate' は、たとえ先行バージョンが反映元、反映先のいずれでもな かったとしても、衝突解決のためのベースがいずれかの先行バージョンの中 に存在するか否かを判定できるようになりました。そのベース・ファイルと リビジョンは、'p4 integrate'、'p4 resolve' および 'p4 resolved' コマ ンドに '-o' オプションを付けることによって参照することができます。 (Bug #413) #55851 ** -i および -I オプションが指定されないとき、'p4 integrate' における、 間接的な反映履歴を考慮する際のデフォルトとして、間接的な反映を考慮し ながら、コマンドがベースなしマージを拒否できるようにします。ヘルプお よび仕様の説明と、反映およびブランチに関する問題は修正されました。 (Bug #3757, #9034, #10740, #11631) #53703 ** 'p4 fstat' は、新しいオプションである '-e #changelist' をサポートしま す。このオプションが指定されたとき、当該チェンジリストで影響を受けた ファイルのみが表示されます。(Bug #13258) #53137 ** 'p4 fstat' における出力フィールドのリストに、'type' が追加されました。 このフィールドは、ファイルが作業状態であるときに表示されます。 #52894 ** 'p4 labelsync' は、ラベル・テーブルの更新においてアトミック(独立した 単一のトランザクション)となりました。以前は、もしユーザが labelsync の操作中に(同じラベルに対して)'p4 sync //...@labelname' を実行する と、同期の結果が一致しない場合がありました。(Bug #13184) #52329 * ** 圧縮されたバイナリ(ほとんどのバイナリファイルがこの形式です)として 保存されているファイルは、圧縮されたままで転送され、クライアントに届 いたときに初めて展開されるようになりました。(以前は、サーバ上で展開 された後にクライアントへ送信されていました。)この新しい動作はオプシ ョンではなく、クライアント・ワークスペースの "compress" オプションに よる影響は受けません。"compress" オプションは、クライアント/サーバ間 ですべてのデータを圧縮したままとします。 #51751 ** 'p4 monitor' は、スーパーユーザがより多くのユーザ環境を参照できるよう にするため、'-e' オプションをサポートするようになりました。'-e' オプ ションは、表示されたフィールドのリストに、クライアント・プログラム名 (もしわかれば)、クライアント名およびホストのアドレスを追加します。 (Bug #12737) #50570 * P4CHARSET は、iso8859-15 をサポートします。このコードページは、すなわ ち欧州の通貨記号を含む latin-1 です。 #50459 ** クライアント・ビューにおいて、オーバレイ・マッピング(+)をサポートす るようになりました。この機能により、ディポ上でまばらに存在しているデ ィレクトリ(またはファイル)を、すでにクライアント上にマッピングされ た特定のディレクトリへ集約させることができます。 オーバレイ・マッピングは、ブランチ・ビューに限っては使用することがで きません。また、ラベル・ビューやその他のビューに対しては何も影響しま せん。 2004.2/68597 以降のバグ修正 --------------------------- #81443 * ** p4 resolve による変更の衝突解決の際、'theirsを承諾'を実行すると、 サーバの元の'theirs'ファイルと一致しないファイルがクライアント上に 残される場合がありました。 (Bug #17890) #80025 * ** Problem with resolve/merge duplicating code when the base file has extra lines at the end that the source and target file do not has been fixed. (Bug #17695) #79733 ** Triggers were inheriting too many handles from the server process on Windows and could exhaust a system wide handle resource limit. Critical handles no longer inheritied. (Bug #17654) #79315 * P4 clients on MacOS X which change files not owned by the user who runs the p4 client may encounter crashs and many temporary files left after the crash. Error messages will now be produced. (Bug #17399) #76944 ** Prevent server from exiting prematurely on encountering a lock upgrade problem. (Bug #17078) #76880 * ** Resolve logic to expand common change regions could cause crashes or bad merges. Changed to only rarely expand common changes when changes align at start. (Bug #16991) #76510 ** 存在しないチェンジリストに対してジョブ指定の 'p4 fix' を実行すると、 サーバがクラッシュする場合がありました。これは修正されました。 (Bug #16959) #74828 ** コンフリクトの発生時、稀に、衝突解決によってサーバがクラッシュしたり、 無限ループに陥ったりする場合がありました。これは修正されました。 (Bug #16596) #73359 ** #72493 のバグ修正によって、新たなクラッシュの可能性が生じました。その クラッシュを避けるため、修正内容は変更されました。結果として、diff の 結果が若干変更するかもしれません。(Bugs #16118, #16425, #16248) #73084 ** 'p4 group' で maxResults または maxScanRows を設定しているとき、異な る場所へファイルをマッピングするようにクライアント・ビューを変更する と、クライアント・ワークスペース内の既存ファイルを、ディポ・シンタッ クス(//depot/name)で参照することができなくなる場合がありました。こ れは修正されました。(Bug #16205) #72935 ** 2004.2 より前のリモート・サーバから圧縮されたバイナリファイルを同期し ようとすると、次のエラーになる場合がありました。: "Operation 'rmt-FileFetch' failed. Unsupported librarian file type 7!" これは修正されました。(Bug #15831) #72642 ** 選択的な反映が存在し、かつ間接的な反映のクレジットを検索する際にそれ らが中間の反映の中にないとき、反映を必要とするファイルが洩れる場合が ありました。これは修正されました。(Bug #16141) #72638 * ** 二つのファイルを変更時に、まず同じ変更が双方に行われ、それが衝突の状 態になり、更に一つのファイルが変更されると、衝突解決において衝突が見 つからない場合がありました。これは修正されました。(Bug #16142) #72493 * ** 衝突解決において、yours ファイルの末尾を超えて読み込みを行うことによ り、サーバがクラッシュする場合がありました。これは修正されました。 (Bug #16118) #71759 * ** オーバラップする変更が同様の領域に対して行われた際に、かなり複雑なマー ジを実施すると、新しい衝突解決のロジックによってサーバがクラッシュす る場合がありました。これは修正されました。(Bug #15968) #71497 * ** マージしている二つのファイルについて、その内容がほとんど同じでありな がら、ベース・ファイルと共通の小さな断片(フラグメント)を多く持つと き、新しい衝突解決のロジックがループすることによりにより、サーバ・プ ログラムもしくはマージ・ツールが CPU を使い切る場合がありました。この 問題は修正されましたが、修正前よりも多くのケースにおいて、衝突(コン フリクト)がレポートされる可能性があります。(Bug #15930) #71324 ** サブミット・トリガの変数 '%change%' が使用不能となる機能落ちを修正し ました。(Bug #15597) #70948 * ** 行のブロックが追加行や削除行でシャッフルされると、新しい衝突解決のロ ジックがループすることによりにより、サーバ・プログラムもしくはマージ・ ツールが CPU を使い切る場合がありました。この問題は修正されました。 (Bug #15867) #70343 * ** 新しい衝突解決のロジックは、以下の状況において行を欠落させる場合があ りました。: - 'theirs' および 'yours' ファイルに共通の変更がある。 - すべてのファイル内の 1行の変更の直後が、'theirs' および 'yours' フ ァイルのどちらか一方における変更の最後の 1行と一致する。 この問題が発生すると、共通でない挿入ブロックの後ろで共通行が失われま す。69424 からこの修正が行われるまでのバージョンでは、実際にこのケー スの衝突を結果として出力し、その衝突が既にマージした行を出力する場合 がありました。この問題は修正されました。(Bug #15751) #70281 ** 'p4 obliterate' は、アーカイブ・ファイルが既に削除された場合と、ディ スクの空き容量がないために怠惰なコピーのアンドゥに失敗した場合とを、 識別できませんでした。これにより、アーカイブ・ファイルが失われる可能 性がありました。この問題は、チェンジ #45574 を元に戻すことによって解 決しました。(Bug #15756) #69739 ** SGI で 'p4 monitor show' を実行すると、pid の値が大きいことが原因でサー バがクラッシュする場合がありました。この問題は解決されました。 (Bug #15657) #69731 ** Linux マシン上でサーバが動作するとき、サーバ/クライアントでデッドロ ックが発生する場合がありました。チェンジ #55835 を元に戻したことによ り、TCP のリード・バッファではなくライト・バッファを参照するようにし、 期待される復帰データの最大値を 16,000 バイトに減らしました。 (Bug #15606) #69727 ** 反映元のリビジョン範囲を指定した反映(選択的な反映)において、反映元 ファイルの代わりに反映先ファイル上でベース・リビジョンが選択される場 合がありました。この問題は、修正されました。(Bug #15656) #69643 ** 'p4 sync @=changelist' の処理において、当該チェンジリストに存在しない ファイルを、偶発的にそのクライアント・ワークスペースから削除する場合 がありました。この用法は、単一の同期の処理スピードを上げるために P4Win が使用します。'p4 sync @=changelist' は、現在では再び 'p4 sync @=changelist,changelist' と同じ意味(あるべき姿)になり、指 定されたチェンジリストにのみ影響を与えるようになりました。 (Bug #15640) #69424 * ** 新しい衝突解決のロジックでは、衝突している箇所を本来よりも小さく出力 することがあり、場合によっては衝突が現れないことがありました。この問 題が発生すると、ファイルの末尾から行が欠落する場合がありました。 (Bug #15425) #69124 * Linux の特定システムコールにおける実装の矛盾により、P4V のような PERFORCE クライアントが CPU を大量に消費し、ハングアップが発生する場 合がありました。この問題は、解決されました。(Bug #15538) #69080 * ** 新しい衝突解決のロジックでは、もしクライアントからの対話形式で [theirs を承諾]が選択されると、結果パネル内で行を二重化する可能性が ありました。この問題は修正されましたが、結果の中の差分と出力された共 通行の差分に関して、フラグメント・カウントの出力に小さな違いがあるか もしれません。スタンドアロンの GUI マージ・ツールは影響を受けます。 (Bug #15502) 2004.2 におけるバグ修正 ------------------------- #65225** PERFORCE の Windows サービスは、システムの再起動時において正常に終了 するようになりました。以前は、サービス・コントロール・マネージャによ って終了していました。(Bug #13257) #62199 ** 'p4 -G job -o' and 'p4 -R job -o' failed if the jobspec contained required fields that deliberately defaulted to invalid values. This has been fixed (Bug #11561). #61038** ユーザが一切のアクセス権限を持っていない(すなわち 'p4 protect' によ って 'list' 以上の権限を何も与えられていない)ディポをクライアント・ ビューに指定したとき、クライアント仕様の保存においてサーバがクラッシ ュする場合がありました。(Bug #14462) #60787 ** 16文字より長いパスワードを設定したとき、ユーザによる設定の後でそのパ スワードが認識されない場合がありました。この問題は修正されました。 (Bug #14431) #60299 ** PERFORCE サーバは、デフォルトのファイル名である "license" と同様に、 "license.txt" をライセンスファイルの名前として認識するようになりまし た。これによって、Windows 上でのインストールは容易になり、サーバを正 常起動する前にファイル名を変更する必要がなくなりました。 (Bug #14461) #59047 ** リビジョン・テキストの冗長なバージョン、およびそのようなリビジョンの 先行リビジョンを持ったアーカイブ・ファイルは、正常に読まれるようにな りました。(Bug #13954) #58393 ** Mac OS X では、ファイルへの編集をしなくて済むように、HFS ロッキングの 代わりに UNIX のパーミッションを使用するようになりました。もし、HFS ロック・セットを持ったファイルを発見した場合、新しいシステムに変換さ れます。HFS は、今後 PERFORCE によってセットされることはありません。 (Bug #7096, #11534) #58391 ** リンクを、同期したり編集目的で作業状態にしたりしても、リンクによって 指し示されているファイル上のフラグを変更することはありません。この操 作は、リンク自身に対して処理されます。本件は、Mac OS X 固有の問題です。 (Bug #13639, #13640) #58964 ** リビジョンの内容が失われていて、アーカイブ・ヘッダにリストされたリビ ジョンのみを持つファイル・アーカイブがあったとき、サーバがクラッシュ する問題がありましたが、これは解決されました。(Bug #14229) #57966 ** 名前を持たないジョブが作成されることはなくなりました。(もし存在する 場合は、削除できます。)(Bug #14141) #57268 ** 'p4 login' のチケットが、プロキシ・サーバに対して動作しない可能性があ りましたが、この問題は解決されました。(Bug #13931) #57034 ** 'p4 verify -u' が仕様ディポ(spec ディポ)内のリビジョンに対して実行 された後、すべての新しいリビジョンに対して 'BAD' が出力される場合があ りました。これは、サーバが以前のチェックサムを誤って再利用していたこ とが原因でした。この問題は、解決されました。(Bug #13096) #57029 * P4PORT に指定したホスト名が数字で始まっているとき、クライアントのコネ クションが切断される場合がありました。この問題は、解決されました。 (Bug #4796) #56972 ** 'p4 dir' が出力するディレクトリの数に対して、制限はなくなりました。 (Bug #13803) #55835 ** サーバの OS が、実際の有効サイズよりも大きな TCP バッファが有効である とレポートしたとき、クライアント/サーバがデッドロックする場合があり ました。これは、サーバが巨大な TCP バッファを構築している場合に、よく 発生する問題です。p4d はより控えめになり、受信バッファとして 30000 バ イトより小さなサイズを保持しようとします。さらに、この設定に対しては 送信バッファではなく、受信バッファのサイズを計測します。(Bug #13364) #55389 ** 古い tempobj と新しい tempobj を一緒にサブミットする特定の状況におい て、新しい tempobj アーカイブ・ファイルのいくつかが削除されない場合が ありました。この問題は、解決されました。(Bug #13628) #54731 ** 'p4 submit' 操作中に、別の PERFORCE クライアント(同じ P4USER、同じ P4CLIENT)の操作が干渉する場合がありました。例えば、現在サブミットし ようとしているファイルを、別の PERFORCE クライアントが元に戻そうとし ているようなケースです。適切な箇所でこれをチェックするようにし、この 問題は発生しなくなりました。'p4 submit' がこのような変更を発見すると、 「サブミット中に、ファイルが新しく追加された、もしくは元に戻されまし た("Files newly opened or reverted during submission")」というエラー メッセージを出力して異常終了します。(Bug #13279, #4104) #54050 ** 'p4 triggers' の文字列に '%' の文字が不足していたとき、サブミット中に サーバがクラッシュする場合がありました。この問題は、解決されました。 (Bug #13346) #53436 * ** テキストファイルの差分表示において、短い行の小さなファイルを用いると、 稀に最善ではない差分を表示する場合がありました。この問題は、解決され ました。(Bug #13228) #51219 ** 'p4 triggers' のトリガ・テーブルにおけるマッピングで、単に "-" を追加 または削除したとき、それがテーブルへの変更として認識されない場合があ りました。この問題は、解決されました。(Bug #12789) #50451 ** 編集目的で作業状態のファイルを別のディポ・ファイルへマッピングし直し、 ディポ・シンタックスを使ってそのディポ・ファイルを同期したとき、その ファイルの作業状態が解除されてしまう場合がありました。この問題は、解 決されました。(Bug #1445) #50435 * ** 'p4 diff2' は、存在しないファイルを示すため、常に '' を表示する ようになりました。以前は、'' は左側で使われていました。スクリプ トやアプリケーションのために以前の動作を必要とするユーザは、プロトコ ル変数 "api" を 2004.2 より前の値、例えば -Zapi=56 に設定することで実 装できます。(Bug #2127) #50078 ** 仕様を編集するような 'p4 client' のようなコマンドにおいて、もしビュー の引数が閉じていないダブルクォートで渡された場合、サーバがクラッシュ する場合がありました。この問題は、解決されました。(Bug #13730) -------------------------------------------------------------------------- -------------------------------------------------------------------------- リリース 2003.2 2004年6月 2003.2 のメジャーな新機能 ------------------------- パフォーマンスの改善 2003.2 では、大規模な運用におけるパフォーマンスついて、数多くの変更が 行われました。 これらの変更点についてのテストは、1MB 程度のファイルを持つサーバに対 して行われましたが、それ以外のサーバに対してもある程度は有効です。 頻繁に同期が行われるケースへの最適化 - #47694 ** 大きなクライアント・ワークスペース -- 典型的には、スクリプトなどで自 動化されたビルドや自動化されたテストを行うために使用されるクライアン ト・ワークスペースです -- で、'p4 sync'コマンドを繰り返し実行する場合 を考慮し、より細かな最適化が行われました。 'p4 sync@changelist,#head'の実行時はデータベース・インデックスの使用 度が最大になりました。 この変更は、すでにクライアント・ワークスペースに同期されたファイル数 よりも、指定した名前付きチェンジリストより後に影響を受けたファイル数 に関する同期スピードをアップします。 このメリットを活かすには、次のような方法をとります: スクリプトによる自動ビルドや自動テスト用のクライアントが、最近のチェ ンジリスト番号を覚えておき、そのチェンジリストより後に行われた変更を 同期します。このとき、提供されたチェンジリストはそれ以前に同期された ものよりサブミットされた時期は早いですが、時期的に接近しているほど同 期のスピードは速くなります。 この最適化は、スクリプトなどによる自動プロセスを実行するためのクライ アント・ワークスペースをターゲットにしています。なぜなら、それらは最 近のチェンジリストを追跡するようなワークスペースであるからです。普通 のユーザは通常、大きなクライアント・ワークスペースを使って、一度に大 量のファイルを同期することは、行いません。 ラベル使用時のスピード・アップ - #47813,#47771 ** file@label,label を使用してリビジョンを特定する際に、ラベルがそのコマ ンドで指定された名前のファイルを含まないときでも、副次的作用は起こら なくなりました。(Bug #11540) @label を使用してリビジョンを特定するときに、その操作がリモート・ディ ポに対してのものであり、かつラベルがそのリビジョンを持っていない場合 は、リモート ・ ディポへアクセスすることはなくなりました。 (Bug #7225) メモリのロックおよびメモリ使用の際の改善 - #47939, #47404, #46797 ** 'p4 sync'と'p4 integrate'を実行する際のメモリの同時使用は、テンポラリ のリソースを早めに解放することで改善されました。 データベースがロックされる現象が一部改善されました。 以前、リビジョンを特定するコマンドの実行時は、どんな場合でもデータベー ステーブル (db.have、db.label) がロックされる必要がありました。 今回より、@client もしくは @label で指定されたリビジョンが存在するこ とで、それらのデータベースを使用するときのみ、ロックされます。 'p4 sync'は、内部キャッシュからの助けにより、ロックしたデータ・ファ イルを解放するようなバッチ処理を行えるようになりました。(Bug #9893) 大きなクライアント・ビューとプロテクション・テーブルについてのスピー ド・アップ - #480461 ** 大きなクライアント ・ ビューもしくはプロテクション ・ テーブルを持つこ とによる'p4 sync'または'p4 integrate'の実行スピードが遅くなることはな くなりました。 間接マージがより高速になりました。- #47038 ** 'p4 integrate -I'(これは base を決定する際に中間の反映を参照します) の実行パフォーマンスが著しく改善されました。通常の直接マージを行う場 合と同程度のパフォーマンスです。(Bug #10587) 2003.2 のマイナーな新機能 ------------------------- #50484 ** 'p4 annotate'が -c オプションをサポートしました。このフラグは、ファイ ルの各行について行番号を表示する代わりにチェンジリスト番号を出力しま す。 #48532 ** ユーザがあるディポに対してアクセス権限を持っていない場合 (すなわち、 'list'アクセスの権限がないか、もしくは'p4 protect'の実行権限が認めら れていない場合) は、'p4 depots'の実行結果を出力しません。また、デフォ ルトのブランチ、クライアント、ラベル、ビューについても同様に表示され ません。(Bug #11969) #47119 ** ファイルの MD5 ダイジェスト (指紋) がサブミットの間に計算され、保存さ れます。最高のパフォーマンスを得るためには、2003.2 のクライアントとサー バ両方を使用してください。これは 2003.2 のクライアント ・ プログラムが MD5 の計算結果をサーバから取り除くためです。(Bug #2696) #47373 ** 'p4 diff -db|-dw'は空白と同様、改行コードも無視するようになりました。 この機能は複数のプラットフォームが混在する環境において非常に有効です。 (Bug #11639) #46947 * 'p4 diff'"-dl"オプションを使用することで改行コードを無視します。 これは複数のプラットフォームが混在する環境において非常に有効です。 (Bug #4654) #46649 ** 'p4 integ'に -D オプションができました。これにより、反映元か反映先に 削除されたリビジョンがあるとき、それらもすべてマージするかどうかを選 択することができます。詳細は'p4 help integ'をご覧ください。 2003.2/51929 からのバグ修正 --------------------------- #68583 ** 存在しないファイルに対する 'p4 changes -m1 <ファイルパス>' が原因で、 revcx テーブルをスキャンする場合がありました。このコマンドは、 maxscanrows で制御されるようになり、さらに 'p4 monitor terminate' コ マンドで中断できるようになりました。(Bug #15421) #68580 ** いくつかのプラットフォーム(Windows、HP)での同時使用において、サーバ のエラー・ログが欠落したり、不完全であったりする場合がありました。こ の問題は、修正されました。(Bug #15356) 2003.2 におけるバグ修正 ------------------------- #51358 ** 'p4 depots'の実行結果には、ユーザが list のアクセスを拒否されているデ ィポも含まれていました。この問題は修正されました。(Bug #12238) #51351 ** mac でないプラットフォーム上での"apple"タイプのファイルに対する'p4 diff' は、"警告:AppleSingle/Double が壊れました (WARNING:AppleSingle/Double corrupted.)"という誤ったエラーを引き 起こすことがありました。この問題が修正されました。(Bug #11023) #51346 * ** 隣接した場所ではあるが、完全に同じ場所ではない部分について、それぞれ 異なる変更がされた 2 つのバージョンをマージしたとき、マージ結果が暗黙 のうちに二重に挿入されます。 これについては衝突の通知がされるようになりました。 (Bug #12708, #12768) #51293 db.locks と db.working 間の矛盾を修正するために'p4d -xf925'を実行する ケースにおいて、ロックの記録を誤って削除してしまうことがありました。 この問題は修正されました。(Bug #12694) #50946 NT に特化した問題です -- -V オプションのプロセスの後にサービスパック・ チェックを実行することが必要でした。もし実行しない場合は、インストー ラが落ちる可能性があります。(Bug #12693) #50517 ** データのあり得ない組み合わせによって、特にチェックポイントのリカバー 中にデータベースの破損が起こることがありました。この破損の原因は修正 されました。(Bug #12567) #50158 バックアップ中もしくは長時間コピーを行っている最中にエラーログ・ファイ ル がロックされた場合、Windows 上でサーバがクラッシュする可能性があり ました。 現在ではクラッシュしないかわりに、ログ・ファイルに書き込みできなくな ったら暗黙的にエラーを書き込みしません。 これにより、エラーログ・ファイルがロックされないよう、管理者は注意を 払わなければならないでしょう。たとえばエディタでログ・ファイルオープ ンしたままの状態にするようなことは避けるべきです。 エディタ上でログ ・ ファイルを見る前に、ログの変更やログ ・ ファイルの コピーが繰り返し行われていることを考慮してください。 (Bug #12403) #50127 ** RCS ファイルは最大 2 ギガバイトまでです。しかし、大きなファイルをサポー トしているプラットフォームは 2 ギガバイトよりも多く書き込むことが可能 です。このサイズのファイルは、圧縮されたテキストファイルとして保存さ れるでしょう。この変更はこのような大きなファイルの書き込みを防げるた め、その結果適切なファイルタイプへの変更をすることになるでしょう。 (Bug #11837) #48418 ** p4d -jr(ジャーナルとチェックポイントのリカバリのためのコマンドです) が、通常のサーバオペレーションと並列に実行されたとき、データベースの 破損を引き起こす可能性がありました。 この現象はもともと p4jrep においてみられていました。この破損の原因は 修正されました。(Bug #11817) #48343 ** db.user テーブルに保存されているユーザ ・ パスワード (これはジャーナル の中にも記録されています) は、クライアントのパスワードとして直接利用 することはできなくなりました。(Bug #11544) #48194 ** 'p4 integrate -I'(間接マージをサポートするコマンドです) は、間違った ベースを決定してしまうことがありました。その結果、マージが必要な場合 に必要でないとレポートしたり、マージが必要でないときに必要だとレポー トすることがありました。 (Bug #10912、#11831、#12129) #47628 ** ディポがメタ ・ データに適応している UTF-8 のみを含むことをチェックし たあとの、いくつかの無効な UTF-8 シーケンスを検出しませんでした。 現在はより多くの無効なシーケンスを検出します。(Bug #11678) #47518 ** 指定したポートが 32767 よりも大きな場合、プラットフォームによっては" 制限モード"でのみしかサーバを起動することができませんでした。 この問題は修正されました。(Bug #11689) #48707 ** データおよびリソースが、すでにワークスペースから手動で削除されている とき、ファイルタイプが"applefile"のファイルを'p4 delete'で削除すると、 "Fatal client error"で終了する場合がありました。 この問題は修正されました。(Bug #11982) #48448 ** ユーザがファイルに対して適切なパーミッションを持っていないにもかかわ らず、そのファイルをサブミットしようと'p4 submit'を実行することによっ て、サーバがクラッシュする可能性がありました。(Bug #11920) #46400 * Unicode モードのクライアントにおいて、P4CHARSET で指定された文字コー ドセットで正しく表示できないキャラクタがエラーやインフォメーションの メッセージの中に含まれているとき、それらのキャラクタは理解不能なキャ ラクタとして、'?'と表示されるようになりました。 この変更がある前は、メッセージそのものは表示されず、'no translation' のエラーメッセージのみが表示されていました。 #46044 ** キーワード拡張 (ktext、text+k など) のあるテキストファイルは、プロキ シを使用している場合、ただしく取り扱えませんでした。 この問題は修正されました。新しい p4p か、もしくは新しい p4d が必要で す。しかし、p4p および p4d のどちらも新しいものを利用すれば、パフォー マンスが最良になります。(Bug 11212) #45941 ** 'p4 verify -q'は、実行時に不必要な時間をかけることなく、アーカイブフ ァイルのダイジェストを計算するようになりました。(Bug 11305) #45574 ** 怠惰なコピーにリンクしないようにしたとき、'p4 obliterate'は中断されて いました。これはアーカイブが既に削除されているからです。今回の変更に より、サーバは警告メッセージを発行しますがプロセスは継続します。 #45067 ** 'p4 fstat -W'は、クライアント上でファイルがオープンされていないときで も、データを返すのが遅くなっていました。現在ではこのコマンドはインデ ックスとして db.working をより使用することで最適な速さで実行されます。 (Bug 9252) -------------------------------------------------------------------------- -------------------------------------------------------------------------- リリース 2003.1 2003年10月 2003.1 のメジャーな新機能 ------------------------- 2003.1 には、p4 仕様のバージョンや構成に対して要求された「文書化されて いない内部変更」が、まだいくつか存在しています。 monitor コマンドにより、実行中の p4 プロセスの状態を表示することができ ます - #41063 ** 新コマンドの 'p4 monitor' により、現在実行中の p4 プロセスの状態を表 示することができます。これは、UNIX の 'ps' コマンドと機能的に似ていま す。PERFORCE 管理者であれば、長時間にわたって実行中となっているプロセ スを中断させることもできます。 使用方法は、'p4 help monitor' をご参照ください。(Bug #2931, #9889) 2003.1 のマイナーな新機能 ------------------------- #43840 * ** バイナリファイルに対して 'p4 resolve -a' を実行したとき、"yours" か "theirs" のどちらかだけが変更されている場合には、自動的に"theirs/yours を承諾" が適用されます。conflict があれば、従来どおり手動の選択が必要 です。対話形式では、最適な選択肢として "at/ay" が示されます。 (Bug #5547) #39123 ** 新しいオプションとして 'p4d -c command' が追加され、データベースがロ ックされている間、指定の command が実行されます。(Bug #9887) #38864 ** 'p4 changes' に "-t" オプションが追加され、日付と同様に時刻が表示され るようになりました。(Bug #3224) 2003.1/46260 (first release)以降におけるバグ修正 ------------------------------------------------ #48707 * データおよびリソースが、すでにワークスペースから手動で削除されているとき、 ファイルタイプが"applefile"のファイルを'p4 delete'で削除すると、 "Fatal client error"で終了する場合があります。 この問題は修正されました。(Bug #11982) #48448 ** 正当な権限を持たないユーザが'p4 submit'コマンドを実行すると サーバがクラッシュする場合がありました。(Bug #11920) #48379 ** p4d -jr(journalとcheckpointリカバリ)と通常のサーバオペレーションを 同時に実行すると、データベースの破損を招く可能性がありました。 これは主にp4jrepで見られる現象です。 この破損の原因となるバグは修正されました。(Bug #11817) #47686 ** 'p4 add'は、'+x'のパーミッションを持つapplefileに対し、 実行ビットを無視する場合がありました。 この変更により、デフォルトでは'apple+x'タイプでファイルを登録します。 2003.1 におけるバグ修正 ----------------------- #46143 ** 'p4 obliterate' において、怠惰なコピーをアンリンクしようとして失敗する と、ディポ・ファイルがすでに削除されているため、コマンドが返ってこない 場合がありました。この変更によって、サーバは警告メッセージを出しますが、 処理は継続します。 #45952 ** Linux版の PERFORCE サーバは、1GB を消費するクローズ実行時に、誤ってメモ リの枯渇をレポートしていました。(Bug #11363) #45779 ** チェンジのフォームにおける[JobStatus]フィールドの設定が、リンクしたジ ョブにおける修正のステータスに反映しない場合がありました。(Bug #11312) #47686 ** 'p4 add'は、'+x'のユーザ・パーミッションを持つ apple file の実行ビット を無視します。今回の変更により、これらのファイルはデフォルトで'apple+x 'としてサブミットされます。(Bug 11409) #45010 * Windows NT において "削除" 操作を同期し、使用中ファイルを unlink しよ うとすると、エラーの表示に失敗していました。さらに、実際の削除が行わ れていたとしても、db.have テーブルが不正に更新されていました。この不 具合は修正されました。(Bug #11068) #44920 ** 英語以外に翻訳されるべきエラー・メッセージのうち PERFORCE の中に保持 されているメッセージが、組み込みの英語メッセージによって不明瞭になっ ていました。この不具合は修正されました。(Bug #11173) #44136 * ターゲット(ローカル・ファイル)がリネーム操作によって使用中の場合、 Windows NT 上で手動の 'p4 resolve' を実行すると、編集した結果が失われ る場合があります。この修正により、ユーザはエディタを含め、ローカル・ ファイルを使用しているあらゆるプロセスを終了させ、内容を失うことなく 作業を進めることができるようになります。(Bug #953) #44444 * ** 差分を取りたいファイルが両方とも同一の行で終わっている場合で、かつこの 行は 1 文字分の空白で終わっていて次の行には続いていないとき、'p4 diff -db'もしくは'-dw'はクラッシュする可能性がありました。 この問題は修正されました。(Bug #11026) #43856 ** 'p4 change -o changelist#' は、有効なクライアントが存在しなくてもチェ ンジの情報を出力することができるようになりました。 #43660 ** 97.3(およびそれ以前)の P4Win は、2003.1(またはそれ以降)のサーバに 対して、あらゆるフォームのデータを編集することができなくなりました。 これにより、97.3 の P4Win はほとんど使われなくなるでしょう。 #43605 * 不正なデフォルト値(例えば 'set-me' のような値)を持つ、カスタマイズ されたジョブ仕様で 'p4 -G job -o' を実行すると、エラーとなります。こ れは、'p4 -G' がブランクのジョブ仕様のフィールドを不用意に有効化しよ うとするためです。この修正により、'p4 -G' は出力されるフォームのフィー ルドを有効化しなくなります。 #43555 ** 'p4 client' において、クライアント仕様の 'Root:' フィールドの中に単一 のダブルクォートを入力することができていました。これによって、仕様が 再作成されるときに、仕様が破壊される場合がありました。今回の修正によ り、このようなケースではエラー・メッセージが出力されるようになりまし た。(Bug #10569) #43360 ** 'p4 obliterate' において、#head または #head,#head をリビジョン指定子 として指定すれば、ファイル内のすべてのリビジョンが選択されることはな くなりました。このセマンティックスは、ほかの同様のコマンドに対しても 修正されました。(Bug #10883) #43205 ** リモート・ディポへアクセスするには、そのリモート・サイトへの接続を可 能にするために、追加のライセンスを必要としていました。今回の修正によ り、これは必要なくなりました。(Bug #2128) #42761 ** 大きなテキストファイル(10000 から 50000行)に対して p4 diff や merge などを実行する際、よりよい結果が得られるよう、内部的に使用される diff アルゴリズムが変更されました。(Bug #10840) #42269 ** p4d がエラー・ログファイルをオープンし続けなくなりましたので、エラー・ ログファイルをリネーム/移動するとき、p4d を停止させる必要がなくなりま した。(Bug #606) #42258 ** 'p4 client -d' が最適化されましたので、クライアントのデータを削除してい る間、他のユーザをロックしなくなりました。(Bug #9519) #41499 ** 'p4 sync' の処理順序として、クライアント・ワークスペースへファイルの追 加を行う前に、クライアント・ワークスペースからファイルの削除を行うよう になりました。この順序で同期処理を実行することによって、クライアント・ ワークスペースが必要とするディスク容量を最小限にすることができます。 (Bug #607) #39841 ** 'p4 resolve' および PERFORCE のマージツールでは、修正が衝突(コンフリク ト)している行においてそれらが厳密に重なりのない行であれば、隣合った行 をコンフリクトとしてレポートしなくなりました。これにより、コンフリクト しているファイルをマージする回数が減るでしょう。(Bug #3811, #7912) #38826 * Windows NT 上で、ファイル・アクセスの問題(例えば、ファイル使用中)によ ってクライアントの '同期' が失敗すると、そのファイルは書き込み可能な状 態のままとなり、読み取り専用の状態に戻りません。すると、続く '同期' 操 作は、"Can't clobber writeable file " のエラーとなります。こ の問題は修正されました。(Bug #786) #38730 ** 大文字/小文字を区別しないサーバ(Windows)において、特定のエンティティ 名(例えば、クライアント名)の大文字/小文字が一致しないとき、それを不 必要に変換してしまう場合がありました。例えば、クライアント名が myciient で 'p4 files ...@MYclient' と実行したとき、クライアント名が myciient から MYclient へ変換される場合がありました。この問題は修正されました。 (Bug #9566) #38395 ** "depot" というディポを作成していない PERFORCE 環境であっても、ユーザが 新しいクライアント・ワークスペースを作成すると、クライアント・ビューの エントリに //depot が現れていました。今後は、ユーザが必要としなければ、 このデフォルトのディポを削除できるようになりました。(つまり、存在する 場合のみ "//depot" のエントリが現れます。) もし PERFORCE 環境が "//depot"で始まるファイルパスを持たない場合、クラ イアント仕様に "//depot" というディポは現れません。(Bug #5960) -------------------------------------------------------------------------- -------------------------------------------------------------------------- リリース 2002.2 2002年12月 2002.2 のメジャーな新機能 ------------------------- 離れたブランチからの反映 - #35537 ** 'p4 integrate' は、直接の親子関係にないブランチ間であっても、完全にマー ジを制御するようになりました。このような例は、main コードラインからブ ランチしたリリース用のコードラインと開発用のコードラインの間において、 例えば開発用のコードラインからリリース用のコードラインへ、直接的に変 更をマージしなければならないようなケースでよく見られます。 以前は、PERFORCE サーバがマージに対する正しいベース・リビジョンを選択 するよう、Technical Notes #9 に示したような操作を行う必要がありました。 今後は、'p4 integrate' の新しいオプションによって、これを実現します。 マージのベース・リビジョンを決定する際、'-I' オプションを指定すると、 中間ファイルを通じて「間接的な」反映履歴を探します。これによって、直 接の親子関係にないブランチ間であっても、離れた関係を取り扱うことがで きます。 新しいブランチのオプションである「indirect」は、ブランチに対して 'p4 branch -I' を暗黙的に指定します。よって、コマンドラインを実行する際に、 あらためて指定する必要がありません。 直接的な関係を持ったブランチに対して '-I' オプションを指定しても構い ませんが、処理速度が遅くなります。 これらのオプションについて更新された情報を参照するには、'p4 help integrate' および 'p4 help resolve' を実行してださい。 ファイル中に行の履歴を表示するannotateコマンド - #35149 ** 'p4 annotate' コマンドを実行することにより、その行が生成されたリビジ ョン番号とともに、その行が表示されます。この機能は CVS の annotate コ マンドと似ていますが、削除された行を表示するオプションがあり、存在し ていたリビジョンの範囲を通知するという点が異なります。 使用方法は、'p4 help annotate' をご参照ください。 複数のクライアントルートを設定 - #34879 ** 複数のプラットフォームにまたがって共有されるクライアント・ワークスペー スに、複数のクライアントルートを設定できるようになりました。同一のワー クスペースが異なるホストからアクセスされる場合、異なるクライアントルー ト・ディレクトリから、同一のクライアント・ワークスペース・ファイルの セットが見られます。 以前は、クライアント仕様においてただ 1 つルートしか設定できなかったた め、プラットフォームを変更する際、ユーザは手動でルートを変更する必要 がありました。 'p4 client' は、3 つのクライアント・ルートをサポートするようになりま した。それらは、1 つのメイン("Root"という名前)と 2 つの代理 ("AltRoots"という名前)です。クライアントにおける現在の作業ディレク トリは、これら 3 つすべてに対して適合するかどうかが検査され、最初に適 合したものが使用されます。適合するものがなければ、やむを得ずメインを 使用します。'p4 info' によって、適用できるクライアント・ルートがレポー トされます。 この機能によって、シンボリックリンクを用いた複数の UNIX パスの共有、 NFS による共有、Windows の共有、さらには MacOS Classic と MacOS X と の間の共有を、クライアント・ルートにおいて実現します。'p4 client' の LineEnd 指定を 'share' にすると、UNIX と Windows でクライアント・ワー クスペースを効果的に共有できるようになります。 複数のクライアントルートを使用するための詳細は、'p4 help client' をご 参照ください。 (Bug #4471, #6200, #6243, #6275, #6521, #7268) 差分表示機能の拡張 ファイルの差分を表示するいくつかのコマンドについて、GNU diff およびパ ッチ・プログラムとの互換性を向上させるために、いくつかの機能改善を行 いました。 空白文字の無視 - #31144, #31078 * ** 'p4 diff'、'p4 diff2'、'p4 describe' および 'p4 resolve' において、 GNU diff と同じように、空白文字の変更を無視できるようになりました。 -db オプションは空白文字の差分を無視し、-dw オプションは空白文字を 完全に無視します。 'p4 resolve' も、解決のダイアログにおいて diff のオプションをサポー トします。ただし、'p4 resolve'は、ファイルが空白文字の差分しか持っ ていない場合、クライアント("yours"とも言います)のファイルからテキ ストを使用することに注意してください。 'p4 diff' に関しては p4 クライアントのアップグレード、'p4 diff2' と 'p4 describe' に関しては p4d サーバのアップグレード、'p4 resolve' に関してはその両方のアップグレードが必要です。 (Bug #879, #1671, #1932) パッチ・フレンドリーな出力 - #35143 ** 'p4 diff2 -u' により、よりパッチ・フレンドリーな出力を生成できるよ うになりました。このオプションは、以前から機能していたのですが、ド キュメントに記載されていませんでした。 (Bug #380) tempobjファイルタイプの変更 - #36061 ** ファイルタイプ修飾子 '+S'(tempobj の別名)の機能が変更になりました。 2002.1 以前の 'tempobj' と同様の機能を提供しますが、ファイルタイプの 使用に関する重要な問題が解決されました。この変更により、安全にご使用 いただけます。 以前は、サーバが複数リビジョンの存在を認識していたにもかかわらず、す べて同一のテキストを共有していました。このことにより、次のような問題 が発生しました。'p4 submit'(サブミットに失敗してもテキストを更新して しまう可能性があった)、'p4 verify'(リビジョンの指紋を書き換えてしま う可能性があった)、'p4 sync'(最新以外のリビジョンを同期しても最新リ ビジョンのテキストを同期してしまう可能性があった)、'p4 obliterate' (最新以外のリビジョンを抹消しても最新リビジョンのテキストを抹消して しまう可能性があった)。 今後は、サーバがリビジョン毎にテキストを割り付け、'p4 submit' におい ては以前のリビジョンをパージする処理を新たに実行します。最新以外のリ ビジョンに対しては、'p4 filelog' では 'purged' として表示されて削除さ れたリビジョンと同様に扱われ、'p4 sync' ではクライアントから削除され、 'p4 verify' では無視されます。 この変更により、ファイルタイプ修飾子 "+S" は、格納のタイプ(最新リビ ジョンのみを保持する非圧縮のバイナリ)から、格納の修飾子(最新以外の リビジョンをパージ)に変わりました。すべてのファイルタイプ(text、 binary、compressed、unicode)に、"+S" 修飾子を付けることができます。 以前、最新リビジョンだけを保持する圧縮バイナリを示していたファイルタ イプ修飾子 "+M" は、"+S" の新しい機能に置き換えられることになります。 まとめると、下表のようになります。: キーワード 2002.1以前 2002.2 -------- ---------- ----------- tempobj binary+Sw binary+FSw xtempobj binary+Swx binary+FSwx ctempobj binary+Mw binary+Sw +F = 圧縮しない +S = サーバ上で、最新リビジョンのみを保持 (2002.1以前) +S = 最新以外のリビジョンをパージ (2002.2) +M = 最新リビジョンのみを保持する圧縮されたバイナリ (2002.1以前) +w = クライアント上で常に書き込み可 (すべての tempobj) +x = クライアント上で実行ビットをセット 'p4d -xu' によってデータベースをアップグレードすると、2002.2 のサーバ は、既存の tempobj ファイルを新しいタイプに更新します。 (Bug #1025, #2642, #3888, #7775) 準スーパーユーザに対する新しいプロテクション - #35832 ** 'p4 protect' の機能が改善され、'super' とは別の 'admin' レベルを持つ ようになりました。'admin' は、完全なスーパーユーザのアクセスではあり ませんが、多くの管理コマンドを実行できます。次のコマンドは、'admin' 権限だけで実行できるようになります。: p4 branch -f p4 change -f p4 client -f p4 job -f p4 jobspec p4 label -f p4 obliterate p4 typemap p4 unlock -f p4 verify 次のコマンドは、引き続き 'super' 権限が必要です。: p4 admin p4 counter -f p4 depot p4 group p4 jobs -R p4 passwd user p4 protect p4 triggers p4 user -f (Bug #3037, #1306, #2842, #3520, #5004. この修正は、これらの不具合と 直接は関係しません。) 2002.2 のマイナーな 新機能 -------------------------- #36081 ** 'p4 resolve' の出力メッセージは、標準出力へ直接書き出されるのではなく、 ClientUser クラスのメソッドへ書き出されるようになります。これにより API ユーザは、出力を取り込んだり解析したりすることができます。この変 更は、API ユーザにのみ関連します。(Bug #6881.) #35972 ** 'p4 resolve' は、'yours' や 'theirs' や自動マージ結果と調整するために、 ファイルが編集されたかどうかを認識するようになり、デフォルトの推奨動 作を適切に変更するようになりました。これにより、もし外部マージツール が正確に 'theirs' を生成するならば、内部マージツールのときと同様に、 'p4 resolve' による「怠惰なコピー」の機能が有効になります。 #35391 ** 作業中チェンジリストに対して 'p4 describe' を実行したとき、修正された ファイルを含むようになりました。(Bug #13, #4974) #35390 ** 新しいオプションである 'p4 revert -n' によって、ファイルを実際に元に 戻すのではなく、元に戻るファイルをレポートするだけの機能が追加されま した。 #35368 ** 長い実行操作がクライアントによってキャンセルされると、それがサーバ内 で検出され、終了することができるようになりました。この機能は、すべて のプラットフォームで有効になるとは限りません。(Bug #409) #35145 ** 新しいオプションである 'p4 files -a' および 'p4 print -a' によって、 最新リビジョンだけではなく、リビジョン範囲内のすべてのリビジョンを表 示します。 #35114 ** 'p4 filelog' に '-t' オプションが追加され、日付と同様に時刻も表示でき るようになりました。(Bug #553) #35063 * 国際語モードにおいて、Mac OS の Roman文字セットのサポートが追加されま した。これを使用するには、P4CHARSET を "macosroman "に設定します。 #34972 ** もし、OS から提供されるシンボルが ASCII ならば、サーバ・タイムゾーン の UTC オフセットを、'p4 info' によって数字とシンボルで表示するように なりました。(Bug #9359) 2002.2 におけるバグ修正 ----------------------- #41516 ** P4proxy を通じて 'p4 client -o' を実行したとき、ネットワークのタイミ ングによってエラーを表示せずに終了してしまう場合がありましたが、修正 されました。 #41173 ** 'p4 vefify' が不当なメモリアクセスを行った場合、サーバがクラッシュす る場合がありました。(Bug #10468) #41169 ** 長時間実行している操作が NT 上で実行しているクライアントによってキャ ンセルされた場合、それが NT サーバ上では検出されませんでしたが修正さ れました。(Bug #10465) #41147 ** ファイルが P4proxy を通じて供給された場合、'p4 sync' の際にクライアン トの "allwrite" オプションが認識されませんでした。この問題は修正され ました。(Bug #10398) #40318 * 特定の状況において、"modTime" オプションが設定されたクライアントでフ ァイルを 'p4 revert' すると、エラー("utime: filepath: Access is denied.") が発生する場合がありました。この問題は修正されました。(Bug #10202) #40313 * 'p4 resolve' が "confirm accept (y/n)" というプロンプトを表示した際、 ユーザが否定の "n" を入力すると、不当に 2 つのメッセージを出力する場 合がありました。これはユーザに混乱を招くものであり、修正されました。 (Bug #10212) #40216 ** 特定の p4 コマンドで "filepath@label" のパラメタを指定すると、ラベル・ テーブルを不必要に操作する場合がありました。これは、指定されたファイ ルパスがファイル・リビジョンをいっさい持たない場合に発生する可能性が ありました。この問題は修正されました。 (Bug #10204) #40122 ** 新しい tempobj タイプのファイルから反映操作を行おうとすると、誤った警 告メッセージ "can't branch without -d flag" を表示する場合がありまし た。この問題は修正されました。(Bug #10166) #39934 ** NT サーバ上の特定の状況において、内部ファイルのリネーム操作が失敗する 可能性がありました。コードの該当部分に再試行が追加され、この問題を追 跡するための適切な情報がロギングできるよう、追加の診断を行うようにし ました。 #38452 ** HP-UX 11 PA-RISC 上で p4d を終了させる際、コアダンプする場合がありま した。この問題は修正されました。(Bug #9641) #38559 * クライアントの行末オプションである "share" は、行末コードとして LF を 用いている Mac のファイルをサポートするよう拡張されました。 (Bug #9068) #37237 ** ビーツリーのページにおける最初の数バイトが壊れていると、'p4d -xv' お よび 'p4d -xr' によって、その不整合を認識できないか、もしくは修正でき ませんでした。現在は、これが正しくハンドリングできます。 #37746 ** 'p4 integrate -i' は、必ずしも反映先ファイルに影響しない間接的な反映 に対して "credit" を与えていたため、適切な反映ができない場合がありま した。この問題は修正されました。(Bug #9573). #37236 * GMT の東側タイムゾーンで動作しているクライアント・プログラムでは、GMT オフセットを正しく計算できず、サブミットや同期時の modtime を誤る場合 がありました。この問題は、修正されました。ただし、すでにサブミットさ れ誤った modtime を持つファイルに関して、それを修正することはありませ ん。 #36747 * OSF のクライアントは、ファイルの modtime を 1日ずらした形で設定してい ました。具体的には、サブミット時には 1日進み、同期時には 1日遅れまし た。この問題は、他の OSF 以外のクライアントを同時に操作しているときに 限り、明らかになります。この修正により、OSF は modtime を正しく設定し ます。(Bug #9212) (注)OSF は、日本語版 PERFORCE においては未サポートです。 #36584 * Cygwin においてファイルをカレントディレクトリから削除('p4 sync' もし くは 'p4 delete' を通じて)したとき、もし 'rmdir' クライアント・オプ ションが設定されていたら、p4 クライアント・プログラムが(直ちに)終了 する場合があります。これは、内部の回避策によって修正されました。 (Bug #7478, #7543) #36150 * クライアントがオプション 'modtime' を設定していた場合、'p4 revert -a' によってファイルの更新時刻がリセットされない場合がありました。この問 題は、修正されました。(bug #8978) #35946 ** 'p4 obliterate -z' に '-y' オプション(実際に抹消)を付けずに実行した 場合、何が行われるかがレポートされるだけになります。これまでは、レポー トだけが行われると表示されていても、実際には「怠惰なコピー」が削除さ れていました。今後、'p4 obliterate -z' を実際に機能させるには、'-y' オプションが必要となります。(bug #3613) #35869 ** 'p4 diff2 @label1 @label2' を実行した際、誤ったメッセージ("RelateMap has empty maps!")が表示される場合がありました。この問題は、修正され ました。(bug #1382) #35829 ** プロトコルの初期化前にサーバがエラー(例えば、データベースをオープン できない)を検知すると、クライアントに間違ったエラー・メッセージ ("Required parameter 'func' not set!")を送信する場合がありました。 この問題は、修正されました。(bug #8110) #35799 ** 国際語モードを有効にするために 'p4d -xi' を実行したとき、db.job また は db.change のテーブルに non-UTF8 のデータが存在するという、誤ったメ ッセージが表示される場合がありました。この問題は、修正されました。 (bug #9011) #35738 ** 'p4 changes -s pending' はファイル名をパラメタとして扱いませんので、 パラメタにファイル名を指定しても何の出力も返しません(rev テーブル内 では、サブミットされたチェンジの情報のみが有効なため)。混乱を避ける ため、ファイル名は指定できないようになりました。(Bug #371) #35403 ** 'p4 job -f' を実行しても、読み取り専用の "once" フィールドを更新する ことはできませんでしたが、これは修正されました。(Bug #5938, #8111) #35274 ** P4Win のパフォーマンスを改善するため、'p4 changes -m1 <ファイルパス>' の処理が特に最適化されました。ただし、有効となるのはこのようなコマン ド記述の場合のみで、@client および @label については改善されません。 (Bug #7306) #34362 ** 大規模サーバに対する P4Win のパフォーマンス改善(以下の #29329 参照) が、大文字/小文字を区別しないサーバ(Windows)においては機能しません でした。これは修正されました。(Bug #8404) #34284 ** 'p4 edit <ファイル>' において、指定するファイルの数を "maxscanrows" よりも大きい数にすると、正しくないエラーメッセージが返される場合があ りました。この問題は、修正されました。(Bug #7837) #34069 ** 'p4 protect' によって完全に許可されない操作をユーザが試みた場合、それ を示すエラー・メッセージが新しくなりました。以前は、ユーザがまったく アクセス権限を持たないのか、それとも実行しているコマンドが使用できな いだけなのか、区別できませんでした。 #33552 ** 'p4 filelog <ローカル・シンタックス>@<ラベル>' を実行すると、サーバが 無限ループに陥る場合がありました。この問題は、修正されました。 (Bug #8107) -------------------------------------------------------------------------- -------------------------------------------------------------------------- リリース 2002.1 2002年4月 2002.1 のメジャーな新機能 ------------------------- インターナショナライゼーション(国際語化)とローカライゼーション(日本 においては日本語化) リリース 2002.1 において、国際語化とローカライゼーションが導入されま した。ローカライゼーションについては、2001.2 において日本でのみ先行リ リースされていました。2001.2 において、PERFORCE クライアントおよびサー バはオプションのモードを持ち、サーバ上のすべてのメタデータといくつか のファイル・コンテンツを、UTF8 Unicode キャラクタセットで持つことがで きます。さらに、ローカルのキャラクタセットへのコード変換を、クライア ントにおいて行います。 PERFORCE の運用において複数バイト文字の入出力を行う場合は、PERFORCE サーバが国際語モードで起動している必要があります。 加えて 2002.1 では、サーバが返すすべてのエラーおよび情報のメッセージ が、PERFORCE のシステム管理者によってローカライズ(自国語化)できるよ うになりました。 Unicode とローカライゼーションのサポートに関する詳細は、付属する i18nnotes.txt をご参照ください。 大規模な開発環境におけるパフォーマンスの改善 大規模な開発環境(多くは、数百万ファイルが PERFORCE の管理下にありま す)を対象とするような改善が、数多く実施されました。 ラベル・コマンドのスピードアップ - #30690 ** 引数としてファイル名を伴った "p4 labels" コマンドは、スピードが遅い上 に、要求されたラベルごとに大量のスキャンをを行うため、ユーザにとって はシステムがロックしたように見えます。そこでこのコマンドは最適化され、 スキャンを実行する代わりに、rev テーブルを取り込むようにしました。 (Bug #6531) 作業中チェンジのスピードアップ - #29365 ** db.change のテーブル中の作業中チェンジが db.changex へ分割され、p4win が頻繁に実行する 'p4 changes -s pending' コマンドのパフォーマンスが改 善されました。これを有効にするには、'p4d -xu' によってデータベースを アップグレードする必要があります。 ディポ・シンタックスのスピードアップ - #29329 ** p4win におけるディポ・ツリーのファイル上で頻繁に実行される'p4 fstat' コマンドのスピードを上げるため、特別な最適化が取り入れられました。p4win は、ディポ・シンタックスを使ってファイルを参照するため、クライアント におけるファイルのリストをすべてスキャンして、指定されたファイルを見 つけます。この最適化によって、まだクライアント・ビューがクライアント 上のファイルを参照しているのであれば、サーバはそのファイルを直接見つ けることができます。これは、ビューが最後に変更された後、クライアント が全体の同期を取っていれば、必ず提供されます。もし p4win が実行する fstat が遅くなってきたと感じたら、クライアント全体の同期を取ってみて ください。 (Bug #7069) データベースのページサイズを拡大 - #27795 ** サーバがデフォルトで用意しているデータベースのページサイズが、1 ペー ジあたり 4KB から 8KB に拡大されました。これによって、効率的なパッキ ングができ、ディスク容量の節約とパフォーマンスの改善が実現できます。 既存のデータベースは、従来どおりの機能になります。この機能を実現する ためには、チェックポイントからのリストアが必要です。 'p4 group' における MaxScanRows - #27952 ** 'p4 group' は 'MaxScanRows' フィールドを持つようになりました。これに より、操作の間、rev テーブルから取り出される列数に制限を設けることが できます。MaxResults では抑制できないような長い操作を制御するときに、 MaxScanRows を利用します。(これらの操作は、ディポのファイルパスをよ り正確に定義することによって、一般的にはスピードアップされる可能性が あります。) デフォルトでは、ユーザが実行できるスキャンのサイズに制限はありません。 しかし、ユーザが何らかの制限をもったグループに属すると、そのグループ が持つ制限(複数のグループに属する場合は、最大値)に従うことになりま す。つまり、制限を厳しく設定した "novice"(初心者)グループを作成する ことも可能ですが、このグループに属するすべてユーザに対して、この制限 が有効になるとは限りません。 詳細については、'p4 help group'、'p4 help maxresults'、'p4 help maxscanrows' を参照してください。 2002.1 のマイナーな 新機能 -------------------------- #29455 ** 'p4 client -t' によって、ビューと同様にクライアント・オプションがコピー されます。'p4 label -t' も同様です。 (Bug #1066) #28516 ** サーバのデータベースにおけるジャーナル取得が、常に有効となります。無 効にするには、明示的に P4JOURNAL=off とします。以前は、環境変数 P4JOURNAL が設定されない限りジャーナル取得は無効となり、サーバルート・ ディレクトリには journal ファイルは作られませんでした。この修正によっ て、journal ファイルが存在しないからといって、ジャーナル取得が行われ ないということはありません。 #28028 ** 'p4 integrate' は、デフォルトで、反映を実行する前に、反映先ファイルの 内容を最新リビジョンと同じ内容になるよう、同期するようになりました。 現在クライアント上にあるリビジョンに反映するには、新しい 'p4 integrate -h' オプションが必要です。 #27808 ** ジョブ検索では、マッチングの際に英字の句読記号を解釈するようになりま した。また、すべての英数字列をインデックスすることに加えて、ジョブの インデックス機構は、空白で区切られた単語もインデックスします。よって、 句読記号を含んだ単語も検索することができます。ジョブ検索の記述に使用 されるオペレータ文字(=^&|()<>)を検索するには、これらの文字を \ でエ スケープしてください。 英文では、句読記号としてカンマやピリオドが最後に付くのが一般的ですの で、句読記号を持った文字列をテキスト・フィールドの中で検索するときは、 ワイルドカード(*)が効果的です。 既存のジョブに対して句読記号を用いた検索を有効にするには、'p4 job -R' コマンドによってインデックスを再構築しなければなりません。ジョブの数 が多いと、このコマンドの実行にはかなりの時間を要します。ただし、この コマンドの実行を中断したり、このコマンドを複数回実行したとしても、何 ら問題はありません。 (Bugs #982, #1004, #1010, #5518) #27227 ** 'p4 submit' は、新しいオプションとして '-r' を提供します。このオプシ ョンを指定すると、追加や編集目的で作業状態のファイルをサブミットして も、引き続き作業状態を保つことができます。(Bug #449) #26931 ** ラベルは、削除されたリビジョンを保持できるようになりました。 ただし、削除されたリビジョンを含めるには、'p4 labelsync' の引数として ファイルリビジョンを明示的に指定しなければなりません。なぜなら、通常、 'p4 labelsync' はクライアント上のファイルに対してのみ実行されるからで す。(そして、削除済みのファイルはクライアント上にはありません。) この修正によって、ラベルは 'p4 integrate' や 'p4 obliterate'の操作を 制御し易くなりました。 (Bug #2351, #5516) 2002.1 におけるバグ修正 ----------------------- #31517 ** 'p4 integrate' では、反映元ファイルの内容がすべて反映先ファイルに反映 されている場合でも、-d オプションを必要とする場合がありました。この修 正によって、-d オプションは、反映先の最新リビジョンを削除する反映操作 を実行したときのみに必要となります。以前は、複雑な反映履歴に対して、 誤動作していました。(Bug #7536) #31503 ** サブミットやいくつかの p4 diff コマンドにおいて内部的に実行される差分 のアルゴリズムは、多くの変更箇所を持った大きなファイルでは、多くの時 間を要していました。大容量のファイルを扱うために、内部のデフォルト値 が、より適正となるように調整されました。この成果は、平均して 3000 行 を超えるファイルを比較したときに現れます。 (Bug #6440) #31502 ** クライアントにおける行末コードのオプションが "share" の場合、バイナリ ファイルをテキストファイルとして衝突解決する(p4 resolve -t オプショ ン)と、正常に動作しない場合がありました。この問題は、解決されました。 (Bug #7580) #30581 * Windows NT 上で、環境変数 P4DIFF に存在しないコマンドを設定すると、p4 クライアント・プログラムがクラッシュしました。この問題は、解決されま した。 (Bug #5684) #30033 * エディタを起動し、MPW(Macintosh Programmer's Workshop)ウィンドゥを クリックしたとき、MPW の p4 クライアント・プログラムが MPW をロックす る問題が解決しました。この修正により、p4 が処理中の間もカーソルが回る ようになりました。 (Bugs #1316, #3603, #4909, #7170) #30001 * p4 クライアント・プログラムは、標準出力にエラーメッセージを出力する前 に、標準出力をフラッシュするようになりました。これにより、エラーメッ セージが標準出力を上書きしてしまわないようになります。本件は、MPW に おいて特に重要です。 (Bug #7029) #29987 * 'apple' タイプのファイルについて、更新日時が設定されなかった問題が解 決しました。 (Bug #6710) #29718 ** $P4ROOT が読み取り専用のファイルシステム上にあっても、'p4d -jc' は動 作します。これにより、NetApp Filer 上でも、スナップショット的なチェッ クポイントの取得を再実行できます。(Bug #6497) #29015 * Mac OS X 上では、ファイルを編集目的の作業状態にし、ファイルタイプを symlink にしたとき、そのファイルがアンロックされませんでした。この問 題は、修正されました。 (Bug #7096) #28580 ** ジョブのインデックス機構において、'always' 指定によって自動的に更新さ れるフィールドであっても、古い値が削除されませんでした。例えば、指定 した更新日時を検索しても、以前の更新日時を持つデータも結果として出力 されました。 インデックス機構は修正されましたので、次の手順でインデックスを再構築 してください。サーバルート・ディレクトリにある db.ixtext と db.ixdate を削除し、'p4 jobs -R' コマンドを実行してください。'p4 jobs -R' コマ ンドは多くの処理時間を要しますが、中断させることもできます。 (Bug #6960) #28435 ** unicode モードのサーバから unicode のリモート・ディポをアクセスするこ とができませんでした。厳密に ASCII データを返そうとすると、unicode モー ドのサーバから非 unicode のリモート・ディポをアクセスしたとき、接続や 通信ができませんでした。この修正によって、リモート・ディポを操作でき るようになりますが、サーバとリモート・ディポは同じモード(unicode か 非 unicode か)にしなければなりません。 #28027 ** 追加されたファイルに対する 'p4 revert' の実行結果には、#1 ではなく #none と出力されるようになりました。これは内部構造の変更によるもので す。 #27840 ** コマンドライン上のワイルドカードが多すぎる場合には、操作がキャンセル されるように変更されました。(Bug #6699) #27817 ** 指定ファイルに関する複数のチェンジが同一のジョブにリンクされている場 合、'p4 jobs filepath' によって、そのジョブが複数回出力されました。こ の修正によって、重複したものはまとめられます。 (Bug #6862) #27710 ** ジョブのステータスが 'p4 change'、'p4 fix'、'p4 submit' によって更新 されたとき、'always' 指定のジョブ・フィールドは更新されるようになりま した。以前は、'p4 job' によってそれらのフィールドが書き換えられたとき のみ、更新されていました。(Bug #4308) #27449 ** 'p4 where' は、プロテクション・テーブルの影響を受けなくなりました。し たがって、クライアント・ビューの設定が正確に反映され、ディポの名前空 間が見えなくなることはなくなりました。(Bug #6160) #27432 ** 大量のファイルに対し、リビジョン範囲を指定して 'p4 obliterate'を実行 すると、リビジョン範囲を指定なかったときに比べて、処理時間がより多く かかりました。この修正によって、ほぼ同じ処理時間になりました。 #27239 * Mac OS X におけるコマンドライン・クライアントにおいても、環境変数 P4EDITOR によって、自由にエディタを選択することができるようになりまし た。CFM Carbon Apps、Mach-O Cocoa、および UNIX コマンドライン・エディ タを開きます。 27236 * HFS+ ディスク上で同期を実行する際、Mac OS X と Mac OS 9 上でファイル を取り扱えるようになりました。Finder は 31 文字より長い名前を表示する ことができませんので、Mac OS 9 上のそれらのファイルは、Finder の中に ハッシュされた名前を持ちます。 この修正は、PERFORCE がディレクトリ名に対して持ついかなる制限に対して も影響を与えません。 #26897 ** 'p4 add' で追加しようとしたファイルが、別のクライアントですでに追加目 的の作業状態になっていると、"can't add exclusive file already opened " のエラーとなっていました。このエラーは、別のユーザまたはクライアン トが +l(排他)のオプションを指定しているときにのみ発生するべきです。 この修正によって、上記のエラーは発生しなくなります。 2002.1-Betaにおけるバグ修正 --------------------------- #34617 ** クライアント・ビューの記述において、非 ANSI文字と ANSI文字が混在した とき、無視されてしまう行がありました。 (bug 8613) #34362 ** 大文字/小文字の区別がないサーバ(NT)において、ビューの記述どおりに 正しく同期できてないことを示す内部フラグが、設定されない場合がありま した。このため、特定のコマンドにおいてパフォーマンスを劣化させること がありました。 (Bug 8404) #33994 ** 有効なクライアントがない状態で実行された p4 コマンド(例えば、fstat) が、have テーブルをスキャンする可能性があります。この問題は、Windows NT および Windows 2000 サーバでのみ発生します。 (Bug #8230) #33784 ** checkpoint 中における journal カウンターの加算は、それ自身、記録され ていませんでした。journal カウンターは、管理者が不正な journal ファイ ルから復旧することを防ぐためのみに使用されます。journal カウンターの 加算は、2002.1 より前と同様に、あらためて記録されるようになりました。 (Bug #8201) #33156 ** 2000.1 より前のサーバによって作成された db.working レコードを持つ PERFORCE のバージョンからアップグレードする場合、2002.1 のインストー ルによって、これらのレコードに不整合を起こす場合がありました。 (Bug #8025) #33038 ** サブミットにおいて "-r"(再作業状態)オプションを使用すると、ktext の 場合、作業状態のままになりますが、クライアント上で読み取り専用になっ ていました。これは修正されました。 #32967 ** 小さなメモリ・リークを修復しました。NT サーバにおいて実行した各コマン ドにおいて、100 バイトを喪失していました。 #32962 ** 2002.1 より前のサーバで実行した追加目的の作業状態を、2002.1 サーバに おいて元に戻すことができませんでした。この問題は、追加操作が表示の更 新を必要としないにもかかわらず、ファイルを最新に更新することができな いという形で現れます。この問題は解決されたのですが、データベースがア ップグレード以降に checkpoint 化され復旧されると、元に戻せない状態の まま残ってしまう場合があります。このようなファイルについては、 obliterate することによって、その状態を回避できます。 2002.1 における制限事項 ----------------------- 本バージョンは、PERFORCE 2002.1(日本語版)です。このリリースには、既知 の不具合として以下の制限事項があります。 なお、この制限事項は、PERFORCE 2002.1(日本語版)にのみ記述されたもので す。 1. 'p4 reopen -t text+x ' を実行したとき、 - reopened; type xtext と表示されます。正しくは、xtext ではなく text+x です。 2. グループ用のパラメタとして、MaxScanRows が設定されている(unlimitted でない)場合、p4 コマンドの実行結果が異なる場合があります。 3. 'p4 add -t unicode *' を実行したとき、ファイルだけでなく、誤ってディ レクトリも作業状態になります。 ファイル名に '*' を指定する場合は、'-t unicode' オプションは指定しな いでください。もしくは、作業状態にしてしまったディレクトリは、'p4 revert ' で元に戻してください。 (以下は、以前のリリースに関する記述ですので、翻訳しておりません。 ご了承願います。) -------------------------------------------------------------------------- -------------------------------------------------------------------------- Release 2001.2, October 2001. Major new functionality in 2001.2 INTERNATIONALIZATION (I18N) SUPPORT The Perforce clients and server have an optional mode of operation where all metadata and some file content are stored in the server in the UTF8 Unicode character set and are translated into the local character set on the client. When running in internationalized mode, all non-file data (identifiers, descriptions, and so on), as well as the content of all files of type "unicode" are translated between the character set specified by the P4CHARSET variable on the client and UTF8 in the server. See the accompanying i18nnotes.txt for a full description of Unicode support. Minor new functionality in 2001.2 #26052 ** "p4 unlock" now has a superuser option "-f", this allows a superuser to unlock any file, usually "unlock" is restricted to files locked by their owner. #25966 ** Performance of many small p4 commands issued rapidly together as might happen with scripts declined in 2001.1. Such performance should be back to pre-2001.1 levels. #24988 ** The p4d server now logs the IP address of its client when the connection is closed unexpectedly. #23682 ** 'p4 changes' now sports -u user and -c client options, to restrict the output to the named user and/or the client. Bugs fixed in 2001.2 #26944 ** If there were multiple depots the check for a default branch spec was not working properly. This has been corrected. When a new branch is created, it must be edited to a narrower view map. #26877 ** Submitting text files was slow and the RCS storage was storing each revision in full. This problem appeared with the 2001.2 beta. RCS storage and performance should be back to normal. #26824 ** Using a label without a file specification (or a very wide one, such as //depot/...@label) could be staggeringly slow, as the server scanned the whole revisions table (and remote depots) looking for files in the label. This slowdown happened in 2001.1, when the db.label table was split from db.have. Now label performance is once again dependent solely on the number of files in the label, rather than the number of files in the server. #26709 ** When submitting a new job, if the computed job name of the form jobnnnnnn already existed we now keep searching for an available job name instead of failing and requiring users to re-enter their job. #26470 ** Words in job descriptions which are more than 2140 bytes of UTF-8 characters would cause the job submission to appear to fail and might have a failure to translate error. The error message has been improved, however such long words cannot be searched for with p4 jobs -e. Error is 'Record key exceeds max size". The job is entered regardless of whether this error occurs. This is not a regression. Prior to 2001.1 such long words were silently ignored by the job indexing system. Now you will see a warning for such long words. #25958 ** A bug was introduced in 2001.1 where creating a label with the template option "p4 label -t template labelname" resulted in an empty label view. This has been corrected. #25951 ** On Windows/NT it is possible for readers of RCS files to block writers due to OS limitations of moving a file while another thread/process is reading it. This "file busy" problem would result in a submit failure with an error describing that a rename had failed. This fix allows for subsequent retries of the failed operation and should alleviate this occasional problem. #23382 ** It should be possible to change the case of a file on a windows server by the following sequence of commands: 'p4 delete xxx' 'p4 sync XXX#n' 'p4 add XXX' (where n is the version prior to the delete). The add was ignoring the case change and instead reverting to the original, now the case change is reflected after the submit. #23379 ** With 'noclobber' set, a file that had been opened for write by the user (presumably to work disconnected) could be deleted with the 'p4 delete' command, this change prevents this from happening. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Release 2001.1, July 2001. Major new functionality in 2001.1 DEFECT TRACKING INTEGRATION SUPPORT In 2000.2 support was introduced for improved integration into external defect tracking systems. This functionality is now supported for general use. PYTHON I/O - #21918 * For ease of scripting the p4 command line client, it now supports a -G flag which formats output and expects input as marshaled Python dictionary objects. FIX STATUS - #21918 ** The jobs schema has been extended to include a 'fix' status, which is a status associated between a job and a change. When the change is submitted, the job takes on the fix's status. 'p4 change', 'p4 submit' and 'p4 fix' now take a -s flag to set a per-fix status, rather than using the default "closed" status. CHANGELIST/JOB UPDATE LOGGING - #21918 ** The new 'p4 logger' command tracks updates to jobs and changelists, enabling external scripting to export such changes. See 'p4 help logger' for more info. BY POPULAR REQUEST SELECTABLE LINE ENDING ON ALL PLATFORMS - #20967 ** * For users who share workspaces among platforms with different line ending conventions, the Perforce clients now support all common endings (cr/crlf/lf) on all platforms (Macintosh, Windows, UNIX). Specifically, the client option "crlf/nocrlf" has been removed and a new LineEnd field added with a more flexible set of options: mac, unix, win, local, and share. (The old "crlf" is now "local", and the old "nocrlf" is "unix"). mac, unix, and win force files to be read and written with platform-specific line endings (cr, lf, and crlf respectively). "local" reverts to the client's native format. "share" writes unix style (lf) but reads either unix (lf) or windows (crlf) style. (Bug #2207.) EXCLUSIVE OPEN FILES - #20966 ** Certain files under Perforce control are best not changed concurrently: images, libraries, and other binary files that are difficult or impossible to merge. The Perforce server has a new filetype modifier that disallows multiple opens on the same file, serializing updates. This modifier (+l) can use be used directly on the command line (by 'p4 add', 'p4 edit', 'p4 reopen'), or can be used in the file mapping table managed by 'p4 filetype'. For example, this makes it possible to ensure that all .gif files added are treated as exclusive-open binary files. See 'p4 help filetypes'. (Bugs #233, #594, #1944.) OBLITERATING OLD REVISIONS ONLY - #20978 ** 'p4 obliterate' now allows a revision range, so that you can obliterate specific revisions of files. This makes it easier to clear out old, unused revisions but keep the latest, active ones. (Bug #929). LABEL REPORTING - #21687 ** 'p4 labels' can now take a file[revRange] argument, to limit the list of labels to those with that particular file/revision. This makes it easy to see what labels are on a particular revision of a file. (Bug #403). Minor new functionality in 2001.1 #22316 ** #0 is now a synonym for #none when specifying (no) revisions. (Bug #5367). #21725 ** 'p4 integrated' now reports a revision range on the target files, rather than just the last revision integrated. This can only occur for reverse integration records (the ones that reflect a target's contribution back to its source: branch into, merge into, etc), because normal "forward" integration records reflect the creation of the single, newly submitted revision of the target file. #21715 ** * A new 'p4 resolve' option has been introduced: 'ae' (for 'accept edit'). This is the suggested and default option when the user edits the file (with the 'e' option), either to remove conflicts or to make any edit. It is also the option used when merges with conflict markers in them are forcibly accepted. The old 'am' (for 'accept merge') now indicates a purely automated merge, without original user changes. Resolves completed with 'ae' will show up in 'p4 filelog' as 'edit from' records. This new distinction between 'merge from' and 'edit from' assists in determining whether the change should ever be integrated back: purely automated changes need not be, while original user edits should be. Now if a user makes original edits, whether by using the 'e' option in 'p4 resolve' or by re-opening the file for edit with 'p4 edit', they will be candidates for merging back to the source file. #21633 ** The db.have table has been split, with label entries moving out to the new db.label table. This eases database size constraints in two ways: first, just splitting the data means the individual tables will be smaller. Second, having a separate table for labels allows for a more compact storage format: the new format requires about 60% of the old space. This requires a database upgrade with 'p4d -xu'. #21574 ** One of the larger database tables, db.integ, has been split into db.integed and db.resolve. This requires a database upgrade with 'p4d -xu'. #21089 ** 'p4 resolve -a' of a binary file where both versions are identical now does an automatic "accept theirs." If they are not identical, a manual selection is still required. (Bug #1509). #21009 ** All identifiers (user names, file names, etc) may now contain characters previously considered unprintable, specifically those in the range 0x80-0xFF. Normal ASCII control characters (such as backspace, bell, etc), as well as #, @, %, *, and ... in filenames, are still disallowed. (Bug #1074, 1339). Bugs fixed in 2001.1 #29244 ** The previous bug fix (#27776) also introduced a regression that would prevent users reverting binary files if they had run 'p4 verify -u' on them, this has been corrected. #27776 ** Under certain unreliable network conditions a submit could stall waiting for data (presumably on a read), the same client would resubmit the change, which would succeed. Eventually the original submit would timeout and flush data to a binary archive file corrupting it. This fix makes use of temporary files to prevent corruption in this manner. #27680 ** Excessive fsyncing of db files was observed to be slowing performance when scripts driving perforce performed many commands in rapid succession. Removed unneeded fsync calls. #26824 ** Using a label without a file specification (or a very wide one, such as //depot/...@label) could be staggeringly slow, as the server scanned the whole revisions table (and remote depots) looking for files in the label. This slowdown happened in 2001.1, when the db.label table was split from db.have. Now label performance is once again dependent solely on the number of files in the label, rather than the number of files in the server. #26457 ** 'p4 changes -i', 'p4 fixes -i', and 'p4 jobs -i' now honor 'MaxResults' settings for internal computation. Without this these commands could consume a large amount of memory (against a large database, of course) while producing only a small number of resulting rows. (Job #6595). #25958 ** A bug was introduced in 2001.1 where creating a label with the template option "p4 label -t template labelname" resulted in an empty label view, this has been corrected. #25628 ** When locking db.* files, the Perforce server could hang or fault on Windows 2000. This has been corrected. #23037 ** A file originally open for integrate (with 'p4 integrate') but then downgraded to edit (with 'p4 edit') generally should have reverse integration records of "edit into", indicating that the changes are candidates for being merged back into the source. But if the 'p4 resolve' action was 'accept yours' (ignoring the source changes), the reverse integration record was left as "ignored by", and the change was ignored for subsequent integration. Now even with 'accept yours' the reverse integration record is "edit into", so that any original edits can later be merged back. (Bug #5622). #22315 ** 'p4 counter' would let you delete/set protected counters just by changing the case of the counter name, when the server was Windows/NT. This has been corrected. (Bug #5384). #21696 ** 'p4 filelog -l' of a file in a remote depot would frequently generate an error, complaining about missing a change description. Now it works like 'p4 filelog' (without -l) on a remote depot file: it just reports the change is remote without trying to provide the change description. (Bug #4872). #21471 ** 'p4 integrate -f' of previously integrated revisions would cause the previous integration record, as reported with 'p4 filelog' or 'p4 integrated', to be lost. This has been correct. (Bug #2766). #20974 ** 'p4 integrate fromFile toFile' used 'toFile' in error messages, even though most of the errors have to do with the 'fromFile' (such as the fromFile not existing). Now the 'fromFile' is used in error messages. (Bug #470). #19923 ** Two users (on two different clients) could add and submit the same file at the same time. The results were more or less reasonable (both revs showed up as adds), but a little disconcerting. Now 'p4 submit' rejects attempts to add already added files. (Bug #1592). #19547 ** 'p4 counter' now sports a '-f' flag to allow superusers to reset the 'change', 'journal', and 'job' counters. Resetting the 'job' counter is needed after importing jobs from another Perforce server; resetting the 'journal' counter is reasonable after removing the existing journal/checkpoint files; and moving the 'change' counter ahead is safe. Moving the 'change' counter back is possible, but will have very bad results if changes start getting overwritten. (Bug #4122). #19546 ** 'p4 job' didn't notice if it was generating a new job name that matched one already entered by the user. Now it refuses to save a supposedly new job if doing so would overwrite an old one. (Bug #4284). -------------------------------------------------------------------------- -------------------------------------------------------------------------- Release 2000.2, December 2000. Major new functionality in 2000.2 2000.2 includes a number of as yet undocumented internal changes for use by the Perforce Defect Tracking Integration project. Otherwise, 2000.2 is a bugfix only release. Minor new functionality in 2000.2 #19047 ** 'p4 integrate' now supports a new -t flag, which makes 'p4 integrate' propagate the source file's filetype to the target file instead of retaining the target file's previous filetype. (Bug #163). #18875 ** The default depot ("depot") no longer must be created before creating other depots. Previously, the default depot was only implicit if there were no other depots defined, and creating another depot would eclipse the default one. Now, the default depot "depot" is implicitly defined as a local depot with mapping 'depot/...' whenever it isn't explicitly defined by 'p4 depot'. (Bug #526). #18796 ** The 'p4 jobspec' form has changed slightly: fields that allow only selected values are now listed under a single "Values" entry; fields with defaults are now listed under a single "Presets" entry. Previously, for each such field there was a special entry "Values-" or "Preset-", but that format made it hard to automate the generation of the jobspec. Bugs fixed in 2000.2 #23060 * 'p4 sync' was aborting (with a zero exit status) if it was unable to replace the original file with the newly synced file. Prior to 2000.2, it would just report an error and continue, eventually exiting with a non-zero status, and with this change it does that once again. (Bug #5655). #21101 ** Linux x86 support of large files (> 2Gb) if Linux kernel of 2.4.0 or later is used. #21084 ** Remote depot access, via a client view with multiple map entries into that remote depot, could sometimes truncate the list of files seen in the remote depot via the 2nd or subsequent mappings. This has been corrected. (Bug #5114). #20598 ** Jobspec entries labeled as "default", but where no default was provided, would cause "p4 job" (of a new job) to crash. This has been corrected. (Bug #4959). #20485 ** The NT server would fault if a backup application had the db.have file locked. Now the server just reports an error. (Bug #3106) #20272 ** Dual processors on NT and a concurrent submit, filelog would cause a server fault. This has been corrected. (Bug #4867) #19882 ** The NT server was leaving temp files around after a 'p4 resolve'. They are now deleted properly again. (Bug #4778). #19810 * 'p4 sync' of an existing file wasn't honoring the modtime or allwrite attributes of a file. This has been corrected. (Bug #4746). #19516 * ** 'p4 diff -t' now will force text diffs of 'apple' filetype files. Previously, '-t' only forced text diffs of binary files. Note that both a 2000.2 server and 2000.2 MPW client are needed for this support (pre-2000.2 clients will just erroneously run 'diff' of the local file against the encoded AppleSingle stream). (Bug #4580). #19515 * 'p4 client -i < file' no longer crashes MPW on the Mac. (Bug #4347). #18095 ** It is supposed to be possible to change the case of file on a Windows Server with 'p4 delete' and a subsequent 'p4 add', but in 2000.1/16895 this was broken: the name would retain its case from before it was deleted. This works again now. 'p4 integrate' is not supposed to change the case of the target file, unless it is being branched on top of a deleted file. In 99.2 and before, integrate would change the case for any operation. Now it only changes it for new branches. #17937 ** Branching a tempobj file and then submitting a new revision to the original would cause the contents of the branched file to change as well. Now tempobj files are copied when branched, so as to avoid this. tempobj files should generally be avoided unless you are willing to live with their otherwise undesirable semantics. (Bug #2626). #17635 ** 'p4 changes @label,#head' gave wrong results, not including all changes since the label. This has been corrected. (Bug #2979). -------------------------------------------------------------------------- -------------------------------------------------------------------------- Release 2000.1, August 2000. Major new functionality in 2000.1 FILE HANDLING OPTIONS Mapped filetype selection - #15936 ** * Filetypes for 'p4 add' can now be selected based on the file's name. The new 'p4 typemap' command manages a file name-to-type mapping. If a file's name matches an entry in that table, it will be used in preference over the type sensed by the client program. (Request #604). Note that this change only requires an updated server to work, but old clients will wrongfully report that empty or missing files are being added as text, even when the typemap is used. New clients are required for warning messages that mention the correct type. (Bug #3819). More keyword expansion - #15900 ** More keywords are now available with ktext files: in addition to $Id$ and $Header$, there is now: $Date$ - date of file submission $DateTime$ - date and time of file submission $Change$ - change of file submission $File$ - just the file name, sans revision $Revision$ - just the revision number, sans file name $Author$ - the user who submitted the file. Notably absent is $Log$ (filelog). It is still anticipated. For compatibility, previously existing ktext files are now named text+ko, which continues to expand just $Id$ and $Header$. In order to take advantage of the new keywords, files must have their type changed with 'p4 edit -t ktext' and resubmitted (presumably updated to include some new keywords). In order to produce valid values for $Change$ and $Date$ (at least), the client program now refreshes ktext files _after_ the changed is committed, rather than just before. If the refresh is interrupted, either by network failure or the user hitting ^C, files not refreshed will not be considered by Perforce to be on the client filesystem, and must be refreshed properly with a subsequent 'p4 sync'. (Request #387). File modification time preserved - #15891 ** * File modification times can now be preserved. The client spec's 'modtime' option continues to cause 'p4 sync' to update a file's modtime, but now to the modtime of the file as of the 'p4 submit', rather than the time of the 'p4 submit' itself. Additionally, files with the new +m modifier always have their modtime's set on 'p4 sync', regardless of the client spec's modtime option. New client executables are required for the modtime's to be detected upon 'p4 submit'. Pre-2000.1 client programs will continue to use the time of the 'p4 submit' as the modtime. (Requests #844, #1254, #2457). JOB SEARCHING Wildcards - #14534 ** 'p4 jobs -e expr' now allows the wildcard * in its expression, to allow for partial word matches. This also allows 'jobs' to check for the presence of a text field being set at all ('field=*'). It also makes it easier to search for all jobs except selected ones, as 'jobs -e' doesn't allow a lone "not" (^) operator. E.g. the expression 'job=* ^word' returns all jobs excluding those with 'word' in it, because 'job=*' matches all jobs. See 'p4 help jobview' for more details. (Requests #1190, #1414, #2262) Minor new functionality in 2000.1 #16617 ** The new option 'p4 print -o localFile' redirects the output to the named file on the client filesystem. The difference between this and redirecting stdout (via the command shell) is that this creates a file of the proper type (text, binary, symlink, apple, xtext, etc). #16298 ** 'p4 info' now reports the date, time, and timezone on the server machine. (Request #2923). #14126 ** 'p4 labelsync' now supports a revision range on its file argument, just as 'p4 sync' does. (Request #14126) Bugs fixed in 2000.1 #18581 * Passwords now work with MVS (IBM Open Edition/Unix System Services) clients. (Bug #3323). #17666 ** Resolving multiple files against the same target and then submitting could get the wrong text of the file in the server if something other than the first file resolved was an "accept theirs". This has been corrected. This problem was introduced in 2000.1/16895. Database inconsistencies caused by this bug can be corrected by running 'p4d -jf 4164' in the server's root directory. It is recommended that you checkpoint both before and after this command runs. (Bug #4164). #17161 ** Modtime for ktext files wasn't working right: upon submission (and refreshing), the file's modtime would get updated rather than reset to its original time. This has been corrected. (Bug #4015). #17079 ** 'p4 fstat' under certain concurrent conditions would cause the p4d on NT to crash. This has been corrected. (Bug #3989). #16848 ** 'p4 dirs' against a remote depot that had lots of deleted files yielded truncated results. This was particularly troublesome for p4win, which makes great use of 'p4 dirs'. Now 'p4 dirs' works properly against remote depots with deleted files, and is a bit faster as well. This change affects the local server of a remote depot connection. The remote depot's server needn't be upgraded. (Bug #2892). #16708 * PDF files, namely those that begin with %PDF-, are now recognized as binary even if they begin with a few K of text characters. PDF files, because they begin with text yet still contain binary, confused the Perforce client program logic that determines the default type of a file. #16707 ** File patterns with duplicate %x wildcards in them (e.g. //depot/%1/%1) are now specifically disallowed. They were never supported, and in certain cases (p4 dirs %1/%1) would send the server into a tailspin, either going compute bound, gaining memory, crashing, or any combination. (Bug $2663). #16705 * 'p4 sync' of a symlink was leaving a temp symlink file behind when updating (rather than creating anew) the symlink. This has been corrected. (Bug #3332). #16638 ** 'p4 resolve -f' would attempt to re-resolve branched and deleted files. Now it only resolves merged (integrated) files. (Bug #3869). #16294 ** The error message 'File(s) not in client view' was cropping up for all sorts of situations where the requested file was not a candidate for the requested operation. This happened a lot when protections were put in place, and was quite confusing. Now the error messages more closely reflect the cause of the problem: 'no permission' means you don't have the requested level of access, 'protected namespace' means you don't even have 'list' access, 'not in client view' means the file is not mapped in the client view, and 'no such file(s)' means the file passed all the above tests but still wasn't found in the depot. (Bug #478, #1995). #16293 ** 'p4 fix' now sets the user@client of the fix to be the user and client who ran 'p4 fix'. It was being set to the user@client who previously created the change in the fix. This is now consistent with the date of the fix, which has always been the date when 'p4 fix' was run. (Bug #655). #15955 * 'p4 resolve -af -v' now always accepts the merged result with the merge markers in it, rather than accepting 'yours' or 'theirs', as it normally does if changes had occurred only in one file. (Bug #3630). #15522 ** A job changed by only altering the case of characters with 'p4 job' wouldn't be detected as being different by a NT server. Now when comparing the old job and the data to be saved, the server always uses case-sensitive comparisons. (Bug #3107). #15520 ** 'p4 jobspec' now says "jobspec not changed" instead of "jobspec saved" if it has, in fact, not been changed. (Bug #1810). #15490 ** Now all field in a 'p4 job' whose default value is $blank ("") must be changed by the user for 'p4 job'. Previously, only the job description (code 105) required the text to be replaced. (Bug #3387). #15489 ** 'p4 job job' is now illegal, because it override the same storage used by 'p4 jobspec'. (Bug #3393). #15488 ** Submitting zero-length files with type binary+k caused a "Librarian checkin" failure. This has been corrected. (Bug #3576). #15462 ** 'p4 counter' now disallows setting any counter used directly by Perforce, namely "change", "job" or "journal". Previously only the "change" counter was taboo. #15393 ** Entries to db.depot weren't being logged in the journal (again -- see #8142). This meant if a depot was created or updated since the last checkpoint and then the server database needed to be recovered from the checkpoint and journal, subsequent attempts to access the server would yield the message "Depot xxx missing from depot table!" Now db.depot entries are once again logged. (Bug #3556). #15093 * Large 'apple' type files no longer are buffered in p4's memory, thus allowing for arbitrarily large 'apple' files to be synced and submitted. On the Mac MPW's default max memory allocation is about 2M, and attempting to manipulate large 'apple' files (particularly those with large resource forks) would cause the MPW p4 tool to exit when it ran out of memory. This change affects all clients, though only the MPW tool seems to have such a limited amount of available memory. (Bug #3200). #15078, 14914 ** 'p4 resolve' properly handles the merge results of multiple sources into the same target file. Previously, if you did two resolves both with "at" (accept theirs), it wouldn't consider that the second "at" overrode the first. Now 'p4 resolve' updates other resolved, pending integration records to reflect the action taken by the current merge. 'p4 submit' also better handles multiple integrations against the same file, creating each reverse integration record with its own proper status, rather than giving all reverse integration records the same status. Note that if you 'p4 integrate' with a 99.2 or earlier server and then try to submit with a 2000.1 server, it will reject the submission as "muddled" if there is more than one "copy from" or "branch from" integration. To correct this, you must revert the file and re-attempt integration and resolving with the 2000.1 server. #14989 ** Keyword expansion for filenames which contain a $ sign used to confuse later keyword expansion. Now $ is replaced with an HTML escape for $, to avoid this problem yet not lose the information about $ characters in the filename. #14428 ** 'p4 branch' would complain "You cannot use the default branch view; it is just a sample" if you didn't change the branch view line in the first 12 characters. This has been fixed. (Bug #3990). #14249 ** 'p4 diff #none' or with any revision that doesn't occur often could send the server into a tailspin of quadratic behavior. This has been corrected and this command now runs as fast as all the others. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Release 99.2, December 1999. Major new functionality in 99.2 MORE MACINTOSH FILE SUPPORT New 'apple' filetype - #13015 ** * There is now an alternative mechanism for storing the resource fork and type/creator information of files originating on the Macintosh. The new filetype 'apple' stores the following all under a single depot file name: the data fork, the resource fork, the Finder info (including the type/creator information), and the comment string. These files are encoded into AppleSingle format for storing on the server. The previous mechanism, which stores the data fork under the regular file name and the resource fork and type/creator information under a separate .file name with type 'resource', is still available. When 'apple' type files are synced onto non-Macintosh 99.2 clients, they are decoded into AppleDouble format, with the non-data portion written into a %file. Unlike the 'resource' type .file, the %file is manifested only on the client: the server only knows of the file by its normal name. If a pre-99.2 client syncs an 'apple' type file, it will be unaware of the encoding and get the raw binary contents, which is in AppleSingle format. Users of CWPerforce 99.1 may want to wait for CWPerforce 99.2 before starting to use the 'apple' file type. It is permissible to submit AppleDouble format files from 99.2 non-Macintosh clients or AppleSingle format files from pre-99.2 clients, but the 99.2 Macintosh AppleSingle implementation decodes only DATA, RESOURCE, COMMENT, and FINDERINFO entries. (Bugs #858, #863, #2699). Support for Macintosh Internet Config - #11821 * Internet Config (part of the MacOS 8.x "Internet" control panel) is now used by 'p4 sync' on the Macintosh to map file extensions to Macintosh type/creator. This is overridden by type/creator information stored in 'apple' type files or in companion 'resource' .file's. BRANCHING AND INTEGRATION IMPROVEMENTS 'p4 filelog' follows branch history - #12482 ** 'p4 filelog' can now follow branch history. If a file was created by branching, 'p4 filelog -i' displays the revisions of the source file (but only revisions up to the branch point). It properly handles files that were branched from other files which themselves were branched from still other files. (Bugs #599, #634, #1690, #2192). No more 2-way text merges - #12354 ** 'p4 integrate' now refuses to arrange a baseless merge unless passed the -i flag. A baseless merge arises when both the source and target files already exist but are not directly related by branching. Previously, 'p4 integrate' would schedule a baseless merge, which 'p4 resolve' would then present as a 2-way text merge. If 'p4 integrate' is forced to schedule a baseless merge, 'p4 resolve' now uses the first rev being merged as the base, rather than attempting a 2-way text merge. This eliminates 2-way text merges altogether. 'p4 integrate' resists mistaken branching - #13292 ** 'p4 integrate' now specifically disallows branching a file from a non-add revision. This means that it will no longer attempt to re-branch a source file on top of a deleted target file when the source file changes. It also won't delete the target file of an integration if it has changed since it was last integrated into the source. 'p4 integrate -d' overrides this, reverting to pre-99.2 behavior, where it was permitted to mix edits with a deleted file. (Bug #2672). Reverse integration records always created now - #10627 ** A reverse integration record (one that shows up in 'p4 filelog' as 'xxx into') is now created for each forward integration record (one that shows up in 'p4 filelog' as 'xxx from'). Previously, an "impure" integration -- a branch downgraded to add, or integrate downgraded to edit, or integrate from multiple sources, didn't generate a reverse integration record. This was meant to signal that the target file's changes still needed to be merged back into the source file, but the lack of integration record was confusing to users. Now special "add into" and "edit into" reverse integration records are created. This only affects reporting. ADMINISTRATION New 'p4 admin' command - #11701 ** The new 'p4 admin' command allows the superuser to stop or checkpoint the server. See 'p4 help admin' for command details. Subgroups - #12240 ** 'p4 group' now allows other groups, rather than just users, to be members of a user group. (Bug #2301). Journal format changes - #11722, #13174 ** Server journal files are now marked with a version line to prevent them from being used to update a database created from a different checkpoint. Journal files now distinguish between new records being written (with the @pv@ mark) from existing records being replaced (with the new @rv@ mark). Checkpoint naming changed - #11759 ** The argument to 'p4d -jc' is now a prefix for the name of the checkpoint and journal files, rather than just the name of the checkpoint file. ".ckp.N" and ".jnl.N" are appended to the prefix to generate the checkpoint and journal file names. The prefix path is relative to the server's root directory. NOTE: THIS IS A CHANGE FROM THE USE OF THIS FLAG IN 99.1 AND BEFORE. (Bug #1059). Journal only flag - #13176 ** 'p4d -jj' copies and truncates the journal, just as 'p4d -jc' does, but without making a checkpoint. This enables a checkpoint to be made offline by building a second database from a previous checkpoint and the newly saved journal (and checkpointing the resulting, second database). Server runs in background - #13167 ** The new 'p4d -d' flag causes it to fork first before accepting connections, so as to act more like a typical UNIX daemon program. The exit status of the parent indicates whether it successfully started up. (Bug #729). REMOTE DEPOT SUPPORT BETWEEN UNIX AND NT - #12114 ** Remote depot interaction between UNIX and NT is now usable, but still not complete. In particular, browsing in the Windows GUI is not possible because 'p4 dirs' does not yet work correctly between UNIX and NT. (Bug #867). LOCKING WORKSPACES TO A SPECIFIC HOST - #12409 * ** Client workspace access can now be restricted to a given host by setting the "Host" field in the 'p4 client' form. By default, new client workspaces are now created with the "Host" field set. Delete the field from the form to allow unrestricted access. This functionality requires a 99.2 client and server. The client will take the following as the host name, in order of preference: a name passed as 'p4 -H host' on the command line, the value of $P4HOST in the client's environment, the client host's "hostname" (which is generally platform specific). The restriction is not a security mechanism, as it can be circumvented with the 'p4 -H host' option. It is meant to prevent accidental misuse of a client workspace from the wrong machine. 'p4 info' displays the client host name as determined by the 'p4' command. (Bug #1242). Minor New Functionality in 99.2 #12805 ** 'p4d -V' now uses $P4ROOT or the '-r root' option to find the license file, so that it can properly display the licensing information. (Bug #708). The server root directory now defaults to the current directory if $P4ROOT is unset and '-r root' is not used. Previously, it was a fatal error not to provide a root directory. #12243 ** 'p4 branch' now rejects attempts to save the default view as the actual branch view. The default view is just a sample that won't work. #12103 * The BEOS p4 client now supports symlinks (as the UNIX p4 clients do). (Bug #2661). #12073 ** The new 'p4 jobs -r' flag sorts jobs in reverse order by name. Normally, they are sorted in ascending order. #11903 ** 'p4 diff' and 'p4 diff2' now take a -t flag to force a textual diff even for non-text (binary) files. The 'p4 resolve -b' flag has been renamed '-t' to match. #11889 ** * The new client option 'rmdir' causes the p4 client program to attempt to delete the enclosing directory if all files therein have been removed by 'p4 sync', 'p4 integrate', or 'p4 revert'. This action is recursive, in that if removing the directory makes the parent directory empty, that parent directory will be removed as well. (Bug #601). #11888 ** 'p4 filelog' now takes a '-m maxRev' flag to limit the number of revisions per file output. #11825 ** * 'p4 revert' now supports a -a flag, which reverts only unchanged files that are opened for edit or integrate, and that don't have any resolved integration records. 'p4 revert' now avoids refreshing client files which haven't changed. This requires a new p4 client executable. (Bug #1405). #11486 ** A branch view that mapped a file back onto itself could, in rare circumstances, cause 'p4 integrate' to attempt to merge the file with itself. Normally, 'p4 integrate' ignores these self-mappings. This confused the logic in 'p4 submit', which assumed a file couldn't be integrated from itself, and lead to bogus integration records and revision records with null fields being created. This has been corrected. (Bug #2539). #11289 ** 'p4 flush', a command that fakes a 'p4 sync' without moving files, is now part of the documented and supported command list. #11271 ** Branch specifications can now be locked, via an option on the branch specification, just as client and label specs can be locked. #11197 'p4 diff -sx file#rev' now implies -f, namely that it will do the checksum comparison even if the client has the file at the named rev. Normally, 'p4 diff' skips files if the client has the named rev, but -sx is generally used to verify that the client has the right text, so it makes sense to force the comparison. #10769 ** You now only need 'list' access, not 'review', just to view a counter with the 'p4 counter' command. You still need 'review' access to delete or change the counter. Bugs Fixed in 99.2 #15007 ** A few servers as of 99.2/14645 (Solaris, AIX, and OSF) would sometimes pretend a file wasn't in a label if asked specifically about that one file (e.g. 'p4 sync file@label'). This has been corrected. (Bug #3460). #14999 * The Macintosh MPW client clobbered writable files, even when 'noclobber' was set. Now, like other clients, it refuses to overwrite files that aren't locked. (Bug #3406). #14999 * The Macintosh MPW client was linked against the "app" version of the OpenTransport libraries, which (like so many things) could cause MPW to crash on exit. Now it it linked against the "extn" libraries, which we're assured will make it all better. (Bug #3146). #14929 ** A bad build (#14024) of the solaris26 p4d server left it unable to truncate the journal properly. This has been corrected. (Bug #3364). #14790 * The Macintosh MPW client was writing memory address 0, which would get trapped by Macsbug's EBBE. It no longer does this. (Bug #3183). #14698 ** The p4d server on AIX didn't shut down when sent SIGTERM or when 'p4 admin stop' was issued. Instead it would go crazy and sometimes kill random, innocent processes. Now it shuts down peacefully. (Bug #3315). #14664 * The Mac MPW p4 client was leaving OpenTransport open, which caused MPW to crash the machine when you quit. This has been corrected. (Bug #3146). #14653 ** Files ending in a null (zero) byte with no trailing newline were not handled correctly by the diff implementation. Now they are. #14580 ** A complicated client view with three "..." wildcards 's in some of the mappings could crash the server. (More than three "..." wildcards are prohibited.) This has been corrected. (Bug #3258). #14539 ** Obliterating a file with many revisions would sometimes leave an empty RCS ,v file in the server's archive. This entry was harmless, but still not right. By purging file revisions in ascending order (again), the ,v files get properly removed once all revisions are gone. (Bug #2326). #14502 ** 'p4 review' would crash the server if the database files were inaccessible (which can happen on Windows NT when the backup or audit processes are running). It no longer does. (Bugs #1912, #3263). #14428 ** 'p4 branch' would reject a branch view (as being the unmodified default, unusable view) if it didn't change in the first 12 characters of the path names. This could easily happen with a one-line branch view with a long depot name. This has been corrected. (Bug #3115). #14249 ** 'p4 diff #none' or with any revision that doesn't occur often could send the server into a tailspin of quadratic behavior. This has been corrected and this command now runs as fast as all the others. #14042 * The Macintosh MPW client would consider a file with an empty data fork to be type 'text', even if there was a resource fork. Now a file with a resource fork and empty data fork is considered type 'apple'. #14041 * The Macintosh MPW client was "too synchronous", locking out other activity while it was running. It now cooperates more with the OS and lets other applications run. (Bug #3123). #14038 ** Remote depot access to 99.2 servers from 99.1 and earlier servers was broken (no data would be returned). This has been corrected. (Bug #3109). #13829 ** Triggers on OSF and Solaris would always fail in 99.2/13307. This has been corrected. (Bug #3100). #13782 ** Submitting a change with a mix of resolve types (accept yours, accept theirs, accept merge) from integration would cause the reverse integration record (the one attached to the source file) to get the wrong resolve type. For example, the target file may say "merge from" but the source file would have "copy into" when it should have "merge into". This has been corrected. This problem only existed in 99.2 prior to 13782. In 13782 and later, database inconsistencies that had been introduced by this bug can be repaired with the command: 'p4d -jf 3104 xxx' where xxx is a change number at or before the upgrade to 99.2. (Checking changes prior to 99.2 is harmless, but slow.) The affected files can be found in the database journal file. It is recommended that you checkpoint both before and after this command runs. (Bug #3104). #13681 ** 'p4 fstat' now requires at least one file argument, rather than going off and scanning the whole server. #13680 ** Obliterating a file that was branched from another now- obliterated file would leave the file archive in place. Now the file archive gets purged properly. (Bug #2326). #12933 * Deleting the resource fork file (.file) on the Mac no longer deletes the whole file. Only deleting the regular file does. #12935 ** 'p4 resolve', when determining whether the same change had been made in the two different legs of the file, would ignore whitespace changes. While sometimes convenient and could suppress some conflicts, this is not strictly correct. It now compares the changes literally to see if they are in conflict or identical. #12937 * 'p4 resolve' of a file without a new line at the end could leave the final <<<< marker at the end of the last line, rather than alone on a line of its own. Now 'p4 resolve' deliberately appends a new line to the file being resolved if it does not have one originally and a marker needs to be added. (Bug #2646). #12907 * Resource forks are now properly truncated on the Macintosh. Previously, if a submitted .file (the resource fork of 'file') was shorter than the one locally on disk, 'p4 sync' would overlay but not truncate the resource fork. (Bug #1017, 2533). #12826 ** Passwords set via p4win (the Windows GUI) were stored in the registry in plain text, while passwords set from the command line were stored encrypted. Now passwords are encrypted regardless. This is a server fix. (Bug #2359). #12679 * ** The worst case performance of the diff algorithm has been improved. Most users will not notice any difference, but anyone submitting very large (>10 MB) files with lots of differences will notice a significant speedup. #12654 ** A filename on the command line larger than 1024 characters could crash the server. This has been corrected. #12563 ** Follow-on to change 10522: complicated mappings could still yield different results, depending on whether you referred to the file via client or depot syntax. This has been corrected. #12356 ** 'p4 resolve -f' didn't consider how the file was resolved the first time around, when setting the merge status. Now it does, and understands that, for example, 'ay' (accept yours) after an 'at' (accept theirs) should leave the merge status as "copy from". #12334 ** 'p4 labelsync' kept the database locked while displaying results to the user. This was very bad if the user was manipulating a large label over a slow network connection. Now labelsync, like the regular sync, locks the database during the computation phase but not during the display phase. (Bug #1527). #12183 ** Supposedly read-only values in new jobs, to be set by the Perforce server, were being set by p4win (the Windows GUI client) and accepted by the server. This could cause problems with date fields where the client and server are in different timezones. Now the server properly tells p4win that these fields are read-only and ignores the defaults that p4win generates, and instead uses its own defaults. In order for the server to tell p4win to gray-out read-only fields, the jobspec must be updated with 'p4 jobspec'. It doesn't have to be changed -- just resaved. (Bug #1108, #2674). #12175 ** With large views (>50,000 files), degenerate sort logic could cause 'p4 sync' and other commands to take a very long time to start. In general, a sync of 100,000 files should start within a minute of server CPU time. #12161 ** 'p4 integrate' now properly requires read access to files in order to branch from them. (Bug #1204). #12159 ** 'p4 filelog' would randomize the integration records for any particular revision. Now all the integration records for a single revision are sorted by the other file's name. #12080 ** The handling of large client and branch views, especially those with many exclusion (-) mappings, has again been sped up. The earlier change (11260) affected the handling of large numbers of files (reducing time from minutes to seconds); this change affects the handling of small numbers of files (reducing time from sub-second to really sub-second). #11969 ** 'p4 jobs -e expression filepattern' ignored the expression. Now it properly produces the intersection of those jobs matching the expression and those fixed by changes affecting the named files. (Bug #1333). #11947 * 'p4 resolve -am' now skips baseless merges, as advertised in the help for 'p4 resolve'. Previously, it would accept all the changes from the source file, which was wrong. (Bug #2635). #11902 * The client support for 'p4 resolve' wasn't properly detecting merge markers in the file before allowing an 'accept merge'. This has been corrected. #11870 ** * 'p4 diff' and 'p4 diff2' produced output which, while correct, did not maintain a canonical form. This posed no problem for the storage of diffs or for human readable output, but in rare cases it could cause a merge conflict to exist when there really was none, since the three way merge algorithm compares the output of two diffs (base vs. yours, base vs. theirs). This has been fixed. #11867 ** 'p4 diff2' would crash if tricked into diffing a binary file. This could only happen if the binary file is branched and then reopened as text. This has been corrected. (Bug #2179). #11577 ** A file opened by 'p4 edit', then synced back to a previous revision, would then be re-opened at that revision. Syncing up to the head rev would then schedule a resolve, which didn't make much sense since the client already had the current text. Now syncing an opened file to an earlier revision (or delete revision, for that matter) does not change the revision at which the file is opened. Syncing to a later revision continues to re-open the file at that later rev, scheduling a resolve as a consequence. (Bug #1775). #11536 ** Checkpointing during heavy use could leave the saved journal files with garbage at the end (instead of real data). This has been corrected. #11533 ** ktext files that ended in a line with a $ but no new line would get mangled on checkout, with the last line disappearing. This has been corrected. (Bug #2314). #11531 ** 'p4 resolve' of a binary file leaked a file descriptor/handle on the server. On NT the server would eventually run out of available handles and refuse to operate. On UNIX the problem only surfaced during a 'p4 resolve' of many files. This has been corrected. (Bug #2557). #11524 ** 'p4d -z -jr' couldn't take more than one argument without crashing. This has been corrected. (Bug #2160) #11437 ** Obliterating a file that was opened for 'branch' or 'integrate' left dangling integration records, which could cause problems if the file was subsequently branched again. This has been corrected. (Bugs #2275, #2531). #11339 * ** The '-ds' flag to 'p4 diff', 'p4 diff2', and 'p4 describe' now accurately reports the number of chunks/lines added and deleted. Previously, it only got the number of changed chunks/lines right. (Bug #2468). #11215, 11221 ** On VMS, referring to local files on a client with a directory-less root (only dev:) produced bogus file names with an extra [ after the dev: name. This has been corrected. Note: this is a server change. (Bug #2477). On VMS, using a relative path [-] would produce bogus file names with an extra ] before the file name. This has been corrected. (Bug #325). #11260 ** The performance of large views (client, label, branch) has been improved substantially, reducing the compute time on 'p4 sync', 'p4 labelsync', and 'p4 integrate' operations. #10983 * Passing '-i' options to the Mac client no longer causes the client to Beach Ball. Previously, using '-i' to pass data in to the Perforce client would hang MPW. (Bug #2162) #10760 ** Fix RCS keyword expansion to properly expand strings found after a non-matching string introduced by a dollar sign. e.g. $myvar = "$Id:$" (Bug#2214). #10655 The case-insensitive Perforce server on NT is now a little more sensitive: it detects case changes in user and file names when saving client/label/branch/user/protection specs. (Bug #2156). #10628,10888 ** 'p4 sync' now properly will delete an always-writable (text+w, symlink) file, even if noclobber is set. (Bug #2177, #2258, #2501). #10554 ** Certain mapping combinations would cause the Perforce server to ignore files. This happened with mappings that used only *'s and tried to rearrange subdirectories. E.g.: //depot/foo/*.h //client/*.h //depot/*.c //client/*.c would ignore the files in the //depot/foo directory. This has been corrected. (Bug #2190). #10522 ** With certain exclusion mappings (those with -'s in front of them) it was possible to get different results depending on how much you limited the operation with file arguments on the command line. For example, with the client view: //depot/bar/... //client/foo/... -//depot/...cc //client/...cc Then a 'p4 sync' would give different results from 'p4 sync //client/foo/...'. This has been corrected. #10314 ** 'p4 change -f' now updates the timestamps on individual revision records, as well as that of the change itself. This is needed because as of 99.1 'p4 filelog' displays the revision's timestamp, not the changes. Without this change, 'p4 change -f' would not be able to influence the timestamp output of 'p4 filelog'. (Bug #839, #2110). #10311 ** 'p4 obliterate' of a file that has been branched out into a file which itself has been branched out could leave the target files with dangling references to the original file's text. This change fixes the obliterate problem, but not any past damage it has done. You'll know you have this problem if you are trying to access files and you see the error: Operation: user-sync Librarian checkout PATH failed. Where "PATH" is the path of a previously obliterated file. If you have such errors, contact technical support (support@perforce.com) for help recovering the files. (Bug #2085). #10308 ** Remote depot access no longer consumes a license for the user "remote". If you have a "remote" user, you'll need to delete it to get the license back, but thereafter remote depot access won't recreate it. This fix is required on the server in the remote depot, rather than the local server accessing the remote depot. (Bug #2128). #10224 ** The IRIX64 p4d would corrupt the db.desc table if a description was longer than about 2K. This has been corrected. #10054 ** 'p4 resolve' of ktext files once again merges with the keywords unexpanded, so they don't produce conflicts. This is the way it worked in 98.2. (Bug #2066). #10048 ** 'p4 resolve -b' no longer attempts a 3-way merge when the binary files had no base. 'p4 resolve' no longer pretends to report the base type when there is no base. #10025 ** The prohibition on client/branch/label names containing the slash (/) character has been recalled, so as to help those poor, unfortunate souls who use conventions with slashes. Slashes are harmless enough in branch names, but continue to be a bad idea for client and label names, as the syntax @label will improperly include any files in any label/* labels. #10024 ** 'p4 diff2' on NT caused file handle leaks and could prevent subsequent submits from succeeding. This has been corrected. (Bug #1748). #9934 ** 'p4 submit' during the middle of a 'p4 verify -u' could cause duplicate head revision records for a single file, causing 'p4 sync' to try to update each such file twice. This has been corrected. (Bug #2028). #9933 ** 'p4 submit -c change file' caused the server to get confused about what was being submitted, resulting in a spurious "file got unlocked!" message. Now file arguments are prohibited if a change number is given. (Bug #1975). #9926 ** Triggers wouldn't run when the Perforce server was running as a Windows/NT service. This has been corrected. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Release 99.1, March 1999. Major new functionality in 99.1 PRESUBMIT TRIGGERS - #8594 ** Pre-submit triggers are now supported. These are commands run on the server after the change is created and the files are locked but prior to file transfers taking place, used to provide user-validation of the change being submitted. See 'p4 help triggers' or the manual for more information. LINE COMPRESSION - #8622 * ** The new client option 'compress' turns on compression of the client/server connection. Both client and server must be 99.1 for this to work. If either client or server are older, this option is silently ignored. Line compression's effectiveness depends on two factors: the nature of the data being transferred and the speed of the link balanced against the processor speed at each end. Because of the repetitive nature of Perforce file names (e.g. //depot/this/that/theotherthing/...), among other factors, compression yields a 10:1 gain on the basic protocol. If text or binary files are being transferred, the gain is roughly the same as compressing the files before submitting them into Perforce. Because compressing data takes CPU cycles, line compression is only effective if the processors can compress faster than the link can pass the data. As a rule of thumb, compression is best for WANs (wide area networks bridging remote locations) and not so good for LANs (local area networks, such as Ethernet). (Bug #1000). EDITABLE CHANGELISTS - #8744 ** 'p4 change' of a pending changelist now presents the jobs and files associated with the changelist, and allows you to add/delete those jobs and files. Only files from the default changelist can be added, and removing a file causes it to return to the default changelist. (Bug #14). 'p4 change' of a submitted changelist now presents the jobs, and allows you to add/delete jobs. Adding a job closes the job as with 'p4 fix'. FLEXIBLE FILETYPES - #7724 ** User-refinable filetypes are now supported: individual bits that control how a file is manipulated and stored can now be set when specifying the filetype during 'p4 add', 'edit', or 'reopen'. See 'p4 help filetypes' for more information. NEWLINE TRANSLATION SUPPRESSION - #7880 ** * The new client option 'nocrlf' suppresses newline translation on Macintosh and Windows clients. If this option is set, text files are read and written as binary files on the client, meaning that the newline is passed through untouched. Normally, newline is translated to carriage-return/newline on Windows and carriage-return on Macintosh. Note that the Perforce server uses newlines, not carriage-return/newline, in text files. This is true even with the server on Windows/NT. This option works with pre-99.1 client programs, but 'p4 diff' and 'p4 resolve' will not diff what they think are binary files, and they won't set the execute bit for xtext files. Upgrade to 99.1 clients for full support of 'nocrlf'. (Bugs #333, #695, #940). P4 DIFF2 OVERHAUL Summary Line - #9151 ** The header line has been changed to include a (one word) summary indicating content or type mismatches. (Bug #1311). Comparing binary files - #9127 ** Diff2 now compares binary files and prints out the line "(... files differ...)" if they are not identical. (Bug #1607). Quiet flag - #8494 ** Diff2 now takes a '-q' flag to suppress all output for files known to be identical (because they are the same file or because they were branched). Also, 'p4 help diff2' now attempts to explain the output of diff2. (Bugs #693, #550.) Using a branch view - #8306 ** Diff2 can now take -b branch name to specify the pairs of files to be compared. If file arguments are also present, they can further limit the files and specify the revisions for comparison. (Bug #799.) BIG INSTALLATION ADMINISTRATION MaxResults avoids unwieldy operations - #8720 ** 'p4 group' now has a 'MaxResults' field, which can be used to limit the size of operations for users in that group. This enables large installations to prevent users from swamping the server with inadvertent, oversized requests (such as 'p4 files //depot/...'). By default, users have no limit on the size of operations they can perform. Once a user belongs to one or more groups with any limit, however, that user has the maximum of those groups' limits. This allows, for example, an administrator to create a "novice" group with a low limit, thereby affecting only certain users. See 'p4 help group' and 'p4 help maxresults' for further info. (Bug #1189). Access times for clients, branches, labels - #8276, #9648 ** Branches, clients, and labels now all have last access dates to facilitate finding and deleting old, unused ones. - For branches, the last access is the last time the branch was used with 'p4 integrate' or 'p4 diff2'. - For clients, it is the last time the client was used for any command that _required_ a client (many commands, such as 'p4 describe', 'p4 changes', etc. do not), or when the client was used as a revision specification (@client). - For labels, it is the last time the label was updated with 'p4 labelsync' or when the label was used as a revision specification (@label). (Bug #1236.) Archive validation - #8587 ** 'p4 verify' now can save the MD5 digest (fingerprint) of file revisions and later compare them to verify archive contents. This can be used, for example, to verify that the server's archive is consistent with the metadata after a restore from backup. The saved digests are also used by 'p4 diff' and 'p4 diff2' to avoid having to compute them for their normal operation. This can considerably lighten the server load if these commands are used frequently. See 'p4 help verify' for information. (Bug #861). Compressed checkpoints/journals - #8558 ** The server can now generate and read compressed (gzip) checkpoints and journals when the -z flag is used with -jc, -jd, or -jr. The live journal of database updates remains uncompressed. (Bug #61). Minor New Functionality in 99.1 #9627, #9754 ** 'p4 integrate' now supports a '-s from' flag, which specifies the source files of an integration when a branch view is used (normally only the target files are allowed). -s also tells it to use the union of the branch view and its reverse (with the target and source files exchanged). #9662 ** The 'p4 fstat' command, long present but undocumented, is now supported. See 'p4 help fstat' for info. The 'p4 -s' flag, also long present but undocumented, is now supported. See 'p4 help usage'. #9260 ** 'p4 jobs' now has a '-m max' flag, like 'p4 changes', to limit the output to the first 'max' jobs. #9240 ** 'p4 jobspec' has been altered to handle read-only fields, Required fields, and Default values differently. Now a single 'field-type' flag on the field definition line determines how a field is set (automatically, or otherwise). See 'p4 help jobspec'. (Bug #1319, #1670). #9139, #9649 * ** 'p4 resolve' now takes a -b flag to force it to attempt a 3 way merge, even if the files are binary. It also makes the files editable/diffable in the resolve dialog. When resolving binary files, Perforce uses an 8-bit clean path. This option works with pre-99.1 client programs, but 'p4 resolve' will not or edit diff what it thinks are binary files. #8951 ** The 'p4 client' and 'p4 label' commands now allow you to use '-t template' for existing as well as new clients and labels. This copies a client or label's view from another client or label. #8878 * ** The new 'p4 passwd' command enables you to set the user's password without having it appear on the screen as editing the form for 'p4 user' does. On Windows clients, 'p4 passwd' also sets the password in the registry in the same way that 'p4 set P4PASSWD' does. #8803 ** You can now directly edit any (unlocked) client. Previously, the Perforce server wouldn't allow you to edit a client other than the current one, but that could easily be circumvented by saying "p4 -c xxx client". Now the more direct "p4 client xxx" works. To protect a client against inadvertent updates by other users, you can use the upgraded lock mechanism (see #7787). #8713 ** The new 'p4 counter' command allows users with 'review' access to set and delete counters directly. (Bug #812). #8557 ** 'p4 add' now allows you to re-add a file that has been deleted if your client has 'p4 sync'ed to something other than the (deleted) head rev. (Bug #459). #8556 ** File patterns in client, label, and branch views can now be quoted (") to allow embedded spaces. The quotes must surround the file pattern. Client roots must now be quoted if they contain spaces. (Bug #420, #429). #7848 ** The logging done by setting P4DEBUG to "server=1" now puts all info for each operation on a single line. #7787 ** Locking of clients is now possible, and locking of labels and clients has converged to mean: it can't be deleted, and its spec can't be updated except by the owner. As before, 'p4 labelsync' can't be used on locked labels. Now, no commands that affect a client can be used on a locked client, _except by the owner_. (Bugs #850, #962, #1043, #1144). The client option 'allwrite', present since 98.2, has now been documented in 'p4 help client'. This option leaves all client files writable. Bugs Fixed in 99.1 #9650 ** 'p4 sync' and 'p4 integrate' now honor the client option 'noclobber' when attempting to delete a file: if the file is writable, it won't be deleted. (Bug #1308). #9613 ** The performance of the Windows GUI could be undermined by certain protection table entries. Commands like 'p4 fstat //depot/*' would take an inordinate amount of time. This has been optimized. (Bug #1904). #9588 ** 'p4 refresh' refreshed all files, rather than just those on the command line. Fixed. (99.1 beta only. Bug #1910). #9551 ** 'p4 diff2' left temp files around on the server, eventually running it out of unique temp file names. Fixed. (99.1 beta only. Bug #1910). #9531 ** With certain overlapping client or branch views it was possible to get different results depending on how much you limited the operation with file arguments on the command line. For example, with the client view: //depot/... //client/... //depot/hdrs/... //client/h/... Any files that might be under //depot/h should be obscured, and a 'p4 sync' would not fetch them. But an explicit 'p4 sync //depot/h/...' _would_ fetch them, which was improper and confusing since a subsequent 'p4 sync' would then delete them again. The view handling has been corrected to ensure that if a part of the namespace is obscured in a view, it remains obscured even if referring directly to obscured files. (Bug #37). #9464 ** Checkpointing to a checkpoint file that was on an NFS mounted disk was very slow, as it locked the file for each write. Now it locks the file once, and is as fast as it was prior to 98.2/8352. #9441 ** Tempobj files created in previous releases couldn't be submitted because they were read-only. Fixed. (99.1 beta only.) #9416 ** 'p4 diff' against a file that was synced by integrate would diff against the wrong client file. Fixed. #9397 ** 'p4 changes -m max path' crashed the server. Fixed. (99.1 beta only. Bug #1878). #9346 * The 'modtime' option of 'p4 client' now works better on the Mac; previously, it didn't adjust for the difference between the UNIX/NT and Mac epochs (1970 vs. 1904). Now its only shortcoming is that it does not adjust for timezone differences. (Bug #1804). #8851 ** A limit of 1024 characters has been imposed on all identifiers: branch, client, file, group, job, label, user, etc. Previously no limit was enforced and extremely long identifiers could cause problems in the underlying database. #8821 ** Using 'p4 integrate' to branch into a file already existing in the client workspace would issue the proper "can't clobber writable file" message, but then act as if the file was branched. A subsequent 'p4 revert' would then wipe out the file. This has been corrected, and the file is only opened for integrate upon successful transfer of the file to the client workspace. (Bug #1488). #8800 ** Spaces are now consistently translated to _ in branch, client, depot, group, job, label, and user names. Elsewhere, spaces are specifically allowed. #8773 ** If you had multiple depots defined, it was then possible to enter a client, label, or branch view with something other than a valid depot name on the left hand side of the mapping. This could cause client files to map to no good place, with bizarre results. Now, only valid depot names are allowed. (Bug #1579). #8772 ** Another concurrency related Windows NT server crash has been fixed, similar to #8401. #8764 ** It is no longer possible to create branch/label/client/depot names that begin with a dash (-) or are purely numeric. The dash made it impossible to delete the entity (as the command line interpreter thought the name was flags) and purely numeric entities could be confused with change numbers when using the @label syntax to specify a revision. (Bug #624, #638, #1001). #8756 ** Branching a text file to ktext now works. Previously, if you branched a text file and reopened it as ktext, the server didn't do the keyword expansion for the first rev. Now it does. #8747 ** RCS keyword expansion has been tightened up to be more RCS-like: now only valid strings (currently $Id$, $Id:$, $Header$, and $Header:$) are intercepted. All other strings are passed through untouched. (Bug #277). #8700 ** Changes with associated fixes can no longer be deleted. (Bug #620). #8668 ** Merely running 'p4 job' no longer causes the job to be considered updated. Something on the form must actually change. (Bug #1127). #8525 ** The 98.2 GUI required at least 'list' level access (granted via 'p4 protect') on all depots for them to show up in the depot explorer window. Now it only requires 'list' level access to the files within the directories to show the directories. (Bug #1191.) #8468 ** Certain combinations of wildcards on the command line coupled with certain combinations of wildcards in the client view could cause the server to generate bogus answers or crash. This has been corrected. (Bug #1071, #1440.) #8465 ** The NT server now runs under NT5.0 beta 2. #8439 ** 'p4 add' no longer allows adding files that are specifically unmapped (by using an exclusion mapping in the client map). (Bugs #983, #1019, #1270.) #8414 ** So as to provide relief to installations with less-than-perfect name services, the 'p4 info' command issued by the Windows GUI no longer causes the server to attempt to look up its own FQDN (fully qualified domain name). Instead, the server now just quickly returns the server's IP address. (Bug #1462). #8401 ** Under certain concurrency conditions on Windows NT, the Perforce server could crash. This has been corrected. #8352, 8186 ** Journal files were getting scrambled on OSF (Digital UNIX) against NFS mounted filesystems and on NT systems with multiple processors, due to write collisions. Journal writes are now protected by the same file locking which protects the database files, which should ensure serialized updates on all platforms against all filesystems. Change 8186 addressed OSF. Change 8352 addresses all other platforms. #8222 ** UNC (\\host\drive\path) paths on NT are now handled properly by the server. That is, the current drive letter (c:) is no longer automatically (and incorrectly) prepended to UNC paths. This is a server change. (Bug #565.) #8205 ** RCS keywords must be followed by : or $ to be expanded, so $Identifier (for example) no longer gets expanded. #8199 ** Mappings with null directories (//) are no longer allowed in client/label/branch views. (Bug #1331). #8190 * The Mac client now works a little better with Toolserver. As before, if there is an error editing a spec (say from 'p4 client'), the p4 client command attempts to wait for the user to enter a line before continuing. Previously, it waited for a keydown event, which never seemed to reach Toolserver, and it would hang; now it attempts to read a line from stdin, where it immediately finds an EOF and continues. One consequence of this change is that from MPW you must now hit 'Enter' rather than 'Return' to continue after such an error. (Bug #946). #8188 ** Empty user names are now blocked at the server, so as to keep from corrupting the underlying RCS file format. #8142 ** Entries to db.depot weren't being logged in the journal. Now they are. #8102 Temp file names on OS/2 are now kept short by limiting the unique identifier to 3 digits. This makes the file names adhere to the 8.3 file name limit. (Bug #1276). #8061 If a file was changed from binary to text during a branch (i.e. integrate creates the new file, which is then reopened as text), and that file was used as the source for further integrations, 'p4 resolve' used the head type (text) when fetching the base for merging. It now uses the base's type (binary). (Bug #1264). #8018 ** The p4d server now suppresses the Windows GUI from listing directories with only delete files in them. Requires new GUI as well. (Bug #1145). #8014 ** Slashes (/) are no longer allowed in branch, client, label, or depot names. Previously they were allowed, but the semantics were questionable. #7857 * 'p4 resolve -v' no longer suggests editing (option [e]) if the result of the merge was changes to only one leg of the file. Editing is now only required if there were changes to both legs. As before, 'p4 resolve' (without -v) only requires editing if there were conflicting changes. (Bug #795). #7846 ** Removing a depot now requires that its files are first removed with 'p4 obliterate'. (Bug #890). #7845 ** The 'p4 integrate' command no longer produces illegal filenames due to mismatched /'s in branch views. If the branch view produces an illegal filename, the 'p4 integrate' is aborted. (Bug #874). #7811 * The Macintosh client has been sped up considerably: I/O buffers are enlarged, network traffic is reduced, and output to the MPW shell is now block buffered instead of line buffered. #7652 ** Sometimes p4d servers couldn't access files in remote depots: the files just appeared not to be there. This has been corrected. (Bug #1153). #7612 ** Referring to a small subset of files against a large label (e.g. p4 sync somefiles@biglabel) could get staggeringly slow. This operation now runs fast, as it did prior to 98.2. #7488 ** Checking out binary files from the NT server caused the server to bloat due to a memory leak. This has been corrected. #7488 ** The following interoperability bugs with the 97.3 GUI against the 98.2 server have been fixed: The GUI was unable to create or edit labels. (Bug #1072). The GUI was unable to associate jobs with pending changes. (Bug #1076). The 97.3 GUI still cannot modify the user's jobview: it can only set it to the now unusable values "all" or "mine". To edit the jobview, you must invoke 'p4 user' from the command line. The equivalent of 'all' is now 'status=open'; the equivalent of 'mine' is now 'status=open user=_username_' (replacing _username_ with your user name). #7452 ** The rcstoperf conversion script would crash if any RCS files contained symbols that began with a digit. The server (which is used to process the RCS files) has been fixed to understand symbols beginning with a digit. #7363 * 'p4 print -q' of a binary file on Windows/NT was treating the last buffer output as text; now it properly outputs the whole file as binary (without CR/LF translation). (Bug #1092). #7242 ** The NT server got confused when integrating filenames whose case had changed between being deleted and re-added. This has been corrected. #7006 * ** The AIX4.1 executables now run on 4.1 again, rather than just 4.2. #6944 * Resolving the data fork of files on a Mac would zero the resource fork; similarly, resolving the resource fork would zero the data fork. This has been corrected. (Bugs #926, #1012). #6921 ** Contrary to the 'p4 protect' documentation, a protection access level could not be downgraded by removing 'list' access for a set of files and then granting the new level for those files: if a new level was granted, it would ignore the fact that the old level was removed. Now the behavior matches the documentation, and it is possible to downgrade an access level as in this example: write user * * //... list user * * -//depot/read-only/... read user * * //depot/read-only/... This allows read/write access to the whole depot, except the //depot/read-only tree, which is read-only. #6905 ** Attempting to check empty binary files in generated errors from the zlib compression module on Irix and other systems. This has been fixed. (Bug #957). #6899 ** On IRIX, the 'p4 fixes' and 'p4 describe' commands wouldn't report job fixes that were associated with changes. This has been fixed. (Bug #969). On Solaris, 'p4 submit' would not close jobs attached to the change being submitted. This has been fixed. (Bug #993). #6679 * A blank line (or any line missing an ='s) in a P4CONFIG file crashed the client. This has been fixed. (Bug #996). -------------------------------------------------------------------------- -------------------------------------------------------------------------- Release 98.2, July 1998. Changes between 97.3 and 98.2. Major new functionality in 98.2 NEW JOBS FUNCTIONALITY - #6542 ** Jobs have been upgraded. Two major shortcomings have been rectified: lack of configurability and lack of searching. 1. Jobs may now contain user defined fields, rather than a fixed set of fields. This is controlled by the jobspec, which is set by the superuser. The default jobspec is compatible with 97.3 jobs. See 'p4 help jobspec' for redefining the jobspec. 2. Jobs now support a fast searching mechanism. As jobs are entered or updated, text and dates are indexed. The index can be searched by passing the 'p4 jobs' command a search expression with the new '-e jobview' flag. The jobview field in 'p4 user' is likewise now a search expression. See 'p4 help jobs', 'p4 help jobview', 'p4 help user' for more information. EASE OF USE P4CONFIG Names Client Config File - #5955 * The new variable P4CONFIG names a file containing variable settings for the client. If the file can't be found in the current directory, then parent directories are searched for the file. Each variable setting is alone on a line and of the form: P4VAR=value. The variables that can be set for the client are currently: P4CLIENT P4DIFF P4EDITOR P4MERGE P4PASSWD P4PORT P4USER (Bug #349, #773). New Revision Specification @date - #5628 ** Wherever revision specifications are supported, @date and "@datetime" can now be used in addition to @change and @label. The format for date is YYYY/MM/DD, and the format for datetime is YYYY/MM/DD:HH:MM:SS. If no time is given, midnight is assumed. Syncing Specific Revisions - #5808 ** 'p4 sync', 'p4 files', and 'p4 print' now allow their file specifications to include a revision range, which limits their operation to files affected within that range. Previously, only the top revision could be specified, and all files as of that revision were considered. This makes it possible to take a single change ('p4 sync @n,n') or to display the files affected between two labels ('p4 files @lab1,lab2'). PROTECTIONS/GROUP User Authentication - #6323 * ** Simple user authentication is now supported. Each user may have an optional password set via 'p4 user'. The password is provided by the client either by setting the new $P4PASSWD variable or by using p4's new '-P passwd' flag. To make use of passwords, both the client and server must be 98.2 or later. If an older client attempts to connect to the server and the user has a password, the server will reject the connection. SETTING THE PASSWORD WITH 'P4 USER' WILL TRANSMIT THE PASSWORD IN THE CLEAR, AND SHOULD BE DONE LOCALLY ON THE SERVER MACHINE OR OVER NETWORKS THAT ARE TRUSTED. The authentication protocol itself does not transmit the password. Protection Groups - #6355 ** User groups are now supported for use with the 'p4 protect' command. Groups are created, updated, and displayed with the new 'p4 group' and 'p4 groups' command. Lines in the protection table managed by 'p4 protect' now have an indicator as to whether they apply to individual users or to a group. (Bug #637). Unauthorized Access Doesn't Use a License - #6427 ** Entries in the user table are now created only after the access level check completes, so that if a user does not have access to the server, then he will not accidentally consume a user license. Protection Levels Make More Sense - #6484, #6471, #5310 ** Non-superusers can now use the depot/group/jobspec commands with the -o flag, as that makes them display only commands. A superuser (a user with 'super' access granted by 'p4 protect') can now create a new user with 'p4 user -f username'. If a user has 'list' but not 'read' access to a file (as granted by 'p4 protect') and attempts to 'p4 sync' the file, the file will now be deleted. Previously, it just pretended the client didn't have the file (and did nothing to it). This allows for part of the depot to be made obsolescent by granting only list access. New "Force" Flags Empower Superusers - #5511 ** The 'branch', 'client', 'label', 'job', and 'user' commands all now take a -f flag to force actions: deleting entities not owned by the current user and setting the modified date of entities. The -f flag requires superuser access. Directly Invoking p4d - #2884 * ** UNIX ONLY. The p4 client program can now directly invoke the p4d server program by setting P4PORT to "rsh:p4d -ir _root_". The "rsh:" instructs the client to run the program following the :, and the -i flag makes p4d run once with its stdin/stdout as the communications pipe. By setting P4PORT to "rsh:rsh host cmd" it is possible to invoke a server on a remote machine, if "cmd" is either the invocation of p4d or a wrapper script which does as much. DATABASE UPGRADES New database format with flexnames - #5312 ** All identifiers may now be of arbitrary lengths. Previously, identifiers were limited to lengths of 32 (user names), 64 (client/label/branch/job names), or 128 (file name) bytes. Because the data is now manipulated using the actual size of the data, rather than the maximum size, the disk and memory usage for the Perforce server has shrunk considerably. Databases are typically 1/3 to 1/2 of their former size, and memory use is commensurately smaller. Because much less data is moved around, the server Performs much better, especially on large queries which previously caused the server to page. Big Databases for SGI Irix - #5713 ** The p4d server now supports database files in excess of 2GB on SGI Irix. Typically, it is the db.have ("have" and label lists) that grows the most, and on large installations these database files have approached the 2GB limit. Now the internal limit for database files is 8TB (8000 GB) for SGI Irix. Upwardly Compatible Checkpoints/Journals - #5313 ** Checkpoint and journal files now have a version number on each line that indicates the format of the line. This will allow checkpoints from previous releases and journals made from multiple releases to be handled properly. Previously, a server could read checkpoints and journals only from the same release level. Most database upgrades are handled by compatibility code for the binary database itself. In some cases, however, it will be necessary to checkpoint and restore in order to upgrade releases. In those cases the compatibility of checkpoints (and journals) will come into play. LIBRARIAN Lazy Copy on Resolve - #5320 ** 'p4 resolve' 'accept theirs' now gets the text of the new revision of the file by doing a lazy copy from the integrated file, rather than taking the text from the client. When using 'p4 integrate' to copy one set of files on top of another, the lazy copy can save space. Compressed File Types - #6120 ** Compressed file types are now supported for text and binary files. The existing binary, xbinary, and resource types have become compressed types, with the old uncompressed types being renamed to ubinary, uxbinary, and uresource. There is also a new ctext and cxtext for storing compressed text. Compressed types are stored in gzip format on the server, but otherwise behave like regular text and binary files on the client. New "Temporary Object" File Types - #6113 ** Two new file types are now supported: tempobj and xtempobj. Both are binary files that are always left writable on the client and only have the head revision stored in the server. xtempobj also has the execute permission set on the client. $Id:$ Now Expands More Like RCS - #6042 ** $Id:$ in ktext and kxtext files are now expanded with a space before the final $, so as to be compatible with RCS and its "ident" program. This makes current ktext files look different according to 'p4 diff -se', so users of that command should refresh their ktext files with 'p4 sync -f'. (Bug #819). $Header:$ Mimics $Id:$ - #5608 ** The keyword $Header:$ is now supported for ktext type files. It expands the same as $Id:$. Minor New Functionality in 98.2 #6559 ** The p4d server process id is now logged in the error log along with the date, client, command, etc when command logging is turned on. Turn command logging on by setting P4DEBUG to "server=1". #6360 ** 'p4 opened' now sports a '-c changelist#' to restrict output to the given changelist number. #6021 ** 'p4 where' now also outputs the local name of the mapped file. This is in addition to displaying the name in both depot and client form in Perforce syntax. (Bug #833). #5381 ** 'p4 filelog' now includes the filetype at each rev. (Bug #709). #5369 ** All ASCII forms are now more tolerant of indenting. Except for text blocks (where the indent is exactly the first white space), values in the forms may be arbitrarily indented, as long as they are indented at all. This makes 'p4 submit' more immune to accidental alterations to the 'Files:' list. 'p4 submit' now has a kinder, gentler message when a file appears in the list that wasn't part of the default changelist. (Bug #694). Bugs Fixed in 98.2 #6108 ** Spurious carriage return characters (CRs in addition to the CRLF at the end of each line) in a text file stored in an NT server depot could cause older revisions of the file to be corrupted. Files with extra CRs usually come about from "windows aware" UNIX text editors or from manually moving text files between UNIX and NT without handling the CRLF translation properly. (Bug #864). #6039 ** Date conversion wasn't taking into account daylight savings time. Now it does. Only 'p4 change -f' did date conversion prior to 98.2. (Bug #852). #5988 * ^C while in the editor launched by p4 client, etc. is now ignored properly. (Bug #789). #5828 ** When expanding database tables hit an out-of-disk condition, the resulting failure was being handled poorly, and sometimes the table was left in a corrupted state. The symptoms of this corruption were either missing rows or, worse, a loop in the btree structure. The latter caused the server to loop, consuming memory, on certain queries and made it impossible to checkpoint, because the checkpoint would never end. This usually happened with the db.have table, as it is the table that typically grows the largest the fastest. Now disk-full conditions are detected earlier, so that the database tables can maintain their consistency better. #5822 * ** The diff logic used by the Perforce client and server (for 'p4 diff', 'p4 diff2', 'p4 describe', and 'p4 resolve') has been adjusted to produce more compact diffs, similar to GNU diff. #5514 * 'p4 resolve -at', and other commands that were supposed to deposit read/write files on the client, were leaving the files read-only on NT. This has been corrected. (Bug #736). #5453 ** In certain cases (with ambiguous client mappings), it was possible to get the same depot file opened twice for branch. This confused the server when it came time to submit or revert, because it only expects the file to be opened at most once. This has been corrected. (Bug #731). #5437 ** 'p4 diff2' and 'p4 integ' would sometimes not see files or pair them properly if protections were being used. This has been corrected. (Bug #549). #5367 ** 'p4 labelsync' of a single file with a revision # would delete the file from the label, rather than replacing it. This has been fixed. (Bug #685). #5317 ** Ending a parameter with a "%" (such as 'p4 have foo%') would yield bogus error messages (at best) and server crashes (at worst). The error message handling has been fixed. (Bug #625). #5315 ** "Keepalives" are now turned on by the server so that it discovers workstations that shut down with live Perforce connections. Without these, if a workstation was powered down (or pulled from the network) while the 'p4' client program was running, the server would just leave the connection in permanent limbo. (Bugs #151, #465). #5309 * ** 'p4 print' of a binary file now actually writes it as binary to standard output on NT. Previously, it would leave stdout in text mode, even if it was a binary file. Now it switches stdout to reflect the type of the file. (Bug #644). #5204 ** Integrate of an already opened file mentioned a bogus revision number. Now it reports the right revision. (Bug #645). #5133 ** The p4d server will now fail to start (logging an error message) if the license file is present but invalid. Previously, the server would start but operate in unlicensed mode (2 users, 2 clients). Rather than being a convenience, that made finding licensing problems harder, so now the server just fails to start if the license is bad. #4961 ** Paths with null directories (//) were no longer allowed in 97.3, but if files with such names came from an upgrade from 97.2, it was not possible to manipulate (or obliterate) them. Now existing files with // in them can be accessed, but new ones cannot be added. #4943 ** On SMP NT machines, a race condition could lead to a server crash under heavy load. This has been fixed, and support for SMP NT machines has been reenabled #4887 ** 'p4 lock' and 'p4 unlock' of a file not opened at the head rev were making it look as if the file was opened at the head rev. This meant files could be submitted without resolving the changes from the head rev. This has been fixed. (Bug #569). #4871 * The NT clients were stripping anything after the first "." in a client name set with P4CLIENT. This has been fixed. If the client name is taken from the hostname it is still truncated after the first ".". This now reflects the 97.2 behavior. (Bug #562). #4847 ** Under certain circumstances, it was possible to replace a label, client, or branch description with a description with the same name but a different type (i.e. a label replaced with a client). This could cause a certain amount of havoc if a client was replaced by a branch, because the client's "have" list would suddenly become inaccessible. This has been fixed. (Bug #547). #4844 ** 'p4d -jc' now again takes an argument (where to put the checkpoint file). This was removed in a misguided change from 97.2. GUI BUGS FIXED IN 98.2 Release notes for the GUI can now be found under "Supplement for GUI for Windows" on the Perforce Technical Documentation web page. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Upgrading from 97.3 and earlier. 1. NEW DATABASE FORMAT WITH FLEXNAMES. The 98.2+ database is not compatible with earlier databases. You must convert it using a 97.3 checkpoint (checkpoints from earlier releases will not be compatible): /path/to/97.3/p4d -r$P4ROOT -jc checkpoint.97.3 (remove the $P4ROOT/db.* files) /path/to/98.2/p4d -r$P4ROOT -jr checkpoint.97.3 The Windows/NT installer will perform this upgrade automatically for you if you do not do it yourself. See change #5312 for details on flexnames. 2. NEW JOBS SUPPORT. Jobs data (if any) must be upgraded after restarting from pre-98.2. To convert, issue the client command: p4 jobs -R You must have 'superuser' access, as granted by 'p4 protect' to use this flag. It is harmless to run this more than once. Note: the jobview field of the user form is not automatically converted. Users must replace their jobviews. The new jobviews that correspond to the old ones are: Old JobView New JobView ----------- ----------- all status=open mine user=username status=open replacing 'username' as appropriate. 3. The new password support (see change #6323) requires 98.2 or newer clients and servers. You cannot set the password if the client program is earlier than 98.2, and once the password is set you cannot connect at all with old client programs. 4. You cannot mix a 98.2 server with a lower version server using remote depots. Further, remote depots between Unix and NT do not work correctly because of the different sort ordering. 5. $Id:$ EXPANSION CHANGED. $Id:$ in ktext files now expands with a space before the final $, like RCS. This makes current ktext files look different according to 'p4 diff -se', so users of that command should refresh their ktext files with 'p4 sync -f'.