p4 submit
概要
作業中チェンジリストと作業中チェンジリストに含まれているファイルをディポにコミットします。
構文
p4 [g-opts
] submit [-r -s] [-f submitoption
] [--noretransfer 0|1]
p4 [g-opts
] submit [-r -s] [-f submitoption
] file
…
p4 [g-opts
] submit [-r] [-f submitoption
] -d description
p4 [g-opts
] submit [-r] [-f submitoption
] -d description
file
…
p4 [g-opts
] submit [-r] [-f submitoption
] [--noretransfer 0|1] -c change
p4 [g-opts
] submit -e shelvedchange
p4 [g-opts
] submit -i [-r -s] [-f submitoption
] --parallel=threads=N
[,batch=N
][,min=N
]
解説
p4 add、p4 edit、p4 delete、またはp4 integrateを使用してファイルを作業状態にすると、そのファイルはチェンジリストに入ります。p4 submitを使用してチェンジリストをディポに送らない限り、ユーザがファイルに加える変更は、クライアントワークスペースコピー内だけで実行されます。
デフォルトでは、デフォルトチェンジリスト内でファイルが作業状態になりますが、新しい番号付きチェンジリストをp4 changeで作成することもできます。
-
デフォルトチェンジリストをサブミットするにはp4 submitを使用します。
-
番号付きチェンジリストをサブミットするにはp4 submit -c
changelist
を使用します。-c
オプションを使用すると、番号付きチェンジリストの説明を変更することもできます。
デフォルトでは、チェンジリスト内のすべてのファイルがディポにサブミットされ、edit
、add
、branch
を目的としたファイルの作業状態は、ファイルへの変更の有無にかかわらず、サブミットによって解除されます。このデフォルト動作を変更するには、自分のワークスペースのp4 clientフォームで[SubmitOptions:
]フィールドを設定します。自分のワークスペースの[SubmitOptions:
]の設定をコマンドラインから上書きするには、p4 submit -f submitoption
を使用します。
p4 submitをデフォルトチェンジリストとともに使用すると、EDITOR
(またはP4EDITOR
)の環境変数で定義したエディタ内に編集用のフォームが表示されます。フォームからファイルを削除することによりチェンジリストからファイルを削除できますが、これらのファイルは次のデフォルトチェンジリスト内で作業状態のままとなります。ファイルを作業状態から解除し、すべてのチェンジリストから除去するには、p4 revertを使用します。
すべてのチェンジリストにはフィールド[Status:
] (ステータス:)があり、このフィールドの値は[pending
] (作業中)または[submitted
] (サブミット済)です。サブミット済チェンジリストは、p4
submitで正常にサブミットされたもので、作業中チェンジリストはユーザが作成したがまだ正常にサブミットされていないものです。
チェンジリストの説明をコマンドラインから指定するには、-d
オプションを使用します。説明変更ダイアログは表示されません。-d
オプションはデフォルトチェンジリストにのみ作用し、番号付きチェンジリストでは機能しません。
ディポ内のファイルの場所は、このファイルのローカルファイルシステム内での場所と、p4 clientフォームで指定されるクライアントワークスペース定義によって決定されます。詳細については、『P4ユーザーズガイド』の「ワークスペースビューの限定」を参照してください。
サブミット処理
p4 submitはチェンジリスト単位で機能します。チェンジリスト内のすべてのファイルがディポ内に保存されるか、1つも保存されないかのいずれかになります。p4 submitはチェンジリスト単位で実行されるため、ファイルを目的別にチェンジリストにグループ化することができます。例えば、1つのチェンジリストに、1つのバグを修正する3つのファイルへの変更を含ませることができます。中断された場合、チェンジリスト内のファイルが1つでも現在のクライアントワークスペースで見つからない場合、他のクライアントワークスペース内で(p4 lockによって)ファイルが1つでもロックされている場合、または衝突解決が必要でまだ解決されていない状態にある場合、p4 submitは失敗します。
p4 -I submitとして実行すると、p4 submitコマンドに進捗インジケータが提供されます。
チェンジリストをコミットする前に、p4 submitは少しの間、サブミットされるすべてのファイルをロックします。ロックもサブミットもされないファイルが存在する場合、そのファイルは番号付き作業中チェンジリストにおいて作業状態のままになります。既定では、サブミット操作に失敗したファイルは、submit.unlocklocked
構成可能変数で設定されるまで、ロックされたままになります。サブミットに失敗した場合、たとえサブミット前に手動でロックされていたとしても、submit.unlocklocked
が設定されていれば、ファイルのロックは解除されます。
デフォルトチェンジリストの処理中にp4 submitが失敗すると、デフォルトチェンジリストにはチェンジリストの次の続き番号が割り当てられ、デフォルトチェンジリストは空になります。サブミットに失敗したチェンジリストは、問題を解決した後、割り当てられた番号で再度サブミットする必要があります。
p4 submitが失敗すると、ファイルの一部またはすべてがサーバにコピーされる可能性があります。デフォルトでは、構成可能変数submit.noretransfer
が設定されていない場合、失敗したサブミットを再試行するとこれらのファイルはすべて転送されます。この場合、サーバはファイルがすでに転送されているかどうかを検出し、失敗したサブミットが再試行される際にすべてのファイルを再転送しないようにします。--noretransfer
オプションを使用して構成可能変数submit.noretransfer
を上書きすることにより、ユーザは現在のサブミット操作時における再転送の動作を選択できるようになります。
並列サブミット
サブミットのプロセス中にファイルを同時に転送できます。リソースが十分にある場合、複数のファイルを同時に転送することにより、submitコマンドの実行が速くなることがあります。この機能を使用するには、サーバとクライアントの両方をバージョン2015.1にアップグレードする必要があります。このセクションをよく読んで、この機能を適切に使用してください。
並列サブミットを有効にするには、構成可能変数net.parallel.max
を設定します。
-
threads=
を指定し、独立したネットワーク接続を指定した数だけ使用して、ファイルが同時に送信されるようにします。スレッドは作業をバッチで取得します。N
batch=
を指定し、バッチ内のファイル数を制御します。N
送信するバイト数が小さすぎる場合、並列ファイル転送は開始されません。
min=
を指定し、並列サブミットの最小ファイル数を制御します。N
-
エッジサーバからコミットサーバへの並列サブミットでは、標準プルスレッドを使用してファイルを転送します。管理者は以下を実行して、プルスレッドがコミットサーバで実行できることを確認する必要があります。
-
コミットサーバが使用するサービスユーザが、エッジサーバにログインしていることを確認します。
-
エッジサーバのサーバ仕様の
ExternalAddress
フィールドが、コミットサーバのプルスレッドがエッジサーバに接続するために使用するアドレスに設定されていることを確認します。クライアントがエッジサーバと通信する際に使用するネットワークとは異なるネットワーク上でコミットサーバとエッジサーバが通信している場合、
ExternalAddress
フィールドには、コミットサーバからの接続に使用されるネットワークを指定する必要があります。また、エッジサーバは2つ以上のネットワーク上で待機する必要があります。
-
-
p4 submit -eを実行するためにアーカイブを共有している場合、および進捗インジケータが使用されている場合、
--parallel
オプションは無視されます。
並列サブミットを使用すると、以下のような場合にパフォーマンスが向上します。
-
パス上のいずれかで大幅なネットワーク遅延が発生しているとき、サブミットされたファイルコンテンツがここを通ってクライアントから保存先のリポジトリに送信される場合。
これには、プロキシとサーバ間やエッジサーバとコミットサーバ間の大幅なネットワーク遅延が含まれます。このような構成で並列サブミットを使用する場合、ネットワーク遅延に関連する固有のTCP遅延は同時に発生します。並列サブミットを使用しない場合は連続的に発生します。
-
サブミットしたファイルを転送する際に大量のリソースを必要とし、このようなリソースが使用可能な場合。
例えば、クライアントからサーバに転送する際にctextまたはバイナリファイルのコンテンツを圧縮するため大量のCPUサイクルが必要となる場合、十分なCPUコアを使用できる限り、ファイルコンテンツの圧縮は、ctextまたはバイナリファイルを圧縮する並列サブミットスレッドごとに1つのCPUコアで実行されます。
また、並列サブミットを使用してもパフォーマンスが大きく改善されない場合があります。
-
環境に応じてネットワークの帯域幅は大切なリソースになります。
ネットワーク遅延が最小限に抑えられている場合、使用可能なネットワークの帯域幅を使用する際に、大量の並列サブミットスレッドが必要にならない可能性があります。使用可能なネットワークの帯域幅が使用されると、並列サブミットスレッドを追加してもパフォーマンスが向上しないことがあります。これが顕著に表れるのは、ubinaryファイルを転送する場合など、ネットワークの帯域幅リソースのみが必要となるファイルコンテンツの転送時です。
-
batch
およびmin
引数に小さい値を使用し、--parallel
オプションを指定することが、実際的に役立つ場合があります。例えば、並列サブミットを使用して少数の大規模なctextまたはバイナリファイルをサブミットする際、十分なCPUとネットワークの帯域幅リソースを使用できる場合は、並列サブミットスレッドごとに少数のファイルを転送することが最適なパフォーマンスにつながることがあります。均等に分けたファイルを並列サブミットで転送する際、そのファイル数が指定した並列サブミットスレッド数(デフォルトでは4)を上回る場合は、
batch
引数をデフォルトの8より小さい値に設定する必要がある場合があります。(例えば、4つの並列サブミットスレッドを使用して8つの大規模なctextまたはバイナリファイルをサブミットする場合、batch
引数は2に設定する必要があります。)したがって、min
引数の値(デフォルトは9)は、サブミットする大規模なctextまたはバイナリファイルの数以下に設定する必要があります。一方、
batch
引数に小さい値を使用すると、並列サブミットを使用して多数の小さいファイルをサブミットする際のパフォーマンスが低下する場合があります。各並列サブミットスレッドがバッチごとにdb.sendq
に頻繁に問い合わせるために生じるサーバのオーバーヘッドが、db.sendq
の同時並行処理に影響する可能性があります。これは、並列サブミットを使用してサブミットされるファイルのサイズが小さくなるほど、並列サブミットスレッドが処理する次のバッチについて、サーバがより頻繁にdb.sendq
に問い合わせるためです。
フォームフィールド
フィールド名 |
タイプ |
解説 |
---|---|---|
|
読み取り専用 |
チェンジ番号、またはデフォルトチェンジリストをサブミットする場合は |
|
読み取り専用 |
現在のクライアントワークスペースの名前。 |
|
読み取り専用 |
現在のPerforceユーザの名前。 |
|
読み取り専用、値 |
ステータスは、チェンジリストを作成したときは |
|
書き込み可能 |
このチェンジリストに関するコメント。この値は必ず変更しなければなりません。 |
|
リスト |
このチェンジリストで修正完了となるジョブのリスト。適切なジョブがない場合、このフィールドは表示されません。 デフォルトでは、p4 userフォームで指定したジョブビュー基準に適合するジョブが一覧表示されますが、一覧から削除することもできます。 |
|
書き込み可能、値 |
変更のタイプ: restrictedタイプの保留状態または確定済みのチェンジリストには、チェンジリストを所有していないユーザ、またはチェンジリスト内の1つ以上のファイルにリスト権限を持っていないユーザがアクセスすることはできません。restrictedタイプの作業中(保留解除された)チェンジリストには、チェンジリストの所有者でないユーザがアクセスすることはできません。publicタイプの変更はこれらの制限なしで表示されます。 |
|
リスト |
このチェンジリストにサブミットしようとしているファイルの一覧。この一覧からファイルを削除してもかまいませんが、ファイルの変更や追加はできません。 |
オプション
|
番号が チェンジリストへの番号の割り当ては、p4 changeによりユーザが手動で行うか、デフォルトチェンジリストのサブミットに失敗したときにPerforceが自動で行うかのいずれかになります。 |
|
コマンドラインから |
|
チェンジリスト番号が
保留状態の変更をサブミットするには、その変更内にあるすべてのファイルが最新であり、衝突解決されている必要があります。どのワークスペースにおいても、ファイルは同じ番号の変更では作業状態になっていないはずです。p4 clientフォームの これは分散環境においてエッジサーバの伝播属性を持つファイルに対してサポートされる唯一のサブミットオプションです。 |
|
p4 clientフォームの
|
|
チェンジリスト仕様を標準入力から読み込みます。入力はp4 submitのフォームで使用されているのと同じ形式でなければなりません。 |
|
サブミット操作の失敗後、すでにアーカイブされているファイルをサーバが再転送するのを防ぐには、1を設定します。サブミット操作の失敗後、すべてのファイルをサーバが再転送するようにするには、0を設定します。この設定は、現在のサブミット操作の構成可能変数 |
|
並列ファイル転送のオプションを指定します。
詳細については、「並列処理」を参照してください。 |
|
サブミット後、デフォルトチェンジリストの |
|
チェンジリストのサブミット時に、デフォルトの状態である
新規のチェンジリストでは、修正完了の状態として
このオプションは、p4 fixの |
|
このファイルパターンのパラメータは、デフォルトチェンジリストのサブミット時のみに使用できます。指定したパターンに一致するデフォルトチェンジリスト内のファイルはサブミットされます。ファイルパターンに一致しないファイルは、次のデフォルトチェンジリストに移動されます。 |
|
「“グローバルオプション”」を参照してください。 |
使用上の留意点
ファイル引数にリビジョン指定子を使えるか? |
ファイル引数にリビジョン範囲を使えるか? |
最低限必要なアクセスレベル |
---|---|---|
なし |
なし |
|
例
p4 submit |
デフォルトチェンジリストをサブミットします。このチェンジリスト内のファイルのユーザリビジョンは、ディポ内に保存されます。 |
p4 submit -c 41 |
チェンジリスト41をサブミットします。 |
p4 submit *.txt |
デフォルトチェンジリスト内で拡張子 |
p4 submit -d "header files" *.h |
デフォルトチェンジリスト内で拡張子 |