P4Vユーザガイド (2020.1)

フェッチとプッシュ

フェッチコマンドとPushコマンドは、複数のユーザが同時に作業を行う分散ワークフローにおける重要なコマンドです。これらのコマンドにより、以下に示す主要なタスクを実行することができます。

  • 個人サーバのチェンジリストを共有サーバにコピーする
  • 他の個人サーバからプッシュされたチェンジリストを共有サーバからフェッチする
  • 共有サーバの全体的なリポジトリのサブセットを取得して使用する
  • 2つの個人サーバ間で作業内容をコピーする

管理者は、FetchコマンドとPushコマンドを使用して、複数の共有サーバ間でチェンジリストをコピーすることもできます。

フェッチコマンドとPushコマンドの分散バージョニングモデルにおける位置付けは、従来のHelixサーバ中央サーバモデルにおけるsyncコマンドとsubmitコマンドの位置付けと同じです。

フェッチコマンドを実行すると、指定したファイルセットとその履歴がリモートサーバからローカルサーバにコピーされます。 プッシュコマンドを実行すると、指定したファイルセットとその履歴がローカルサーバからリモートサーバにコピーされます。 どちらのコマンドの場合も、一部のファイルだけがフェッチまたはプッシュされることはなく、指定したすべてのファイルがフェッチまたはプッシュされるか、いずれのファイルもフェッチまたはプッシュされないという結果になります。

リモートサーバへのファイル転送の開始後にPushコマンドが失敗した場合、それらのファイルはリモートサーバ上でロックされたままになります。 他のユーザがこれらのファイルをサブミットすることはできません。 Pushコマンドをすぐに再実行できない場合は、別のP4Vウィンドウを使用してリモートサーバに接続し、ファイルのロックを手動で解除することができます。

CloneコマンドまたはInitコマンドを使用してDVCSリポジトリを作成した場合、そのリポジトリ内のファイルは、リモートサーバからクローンまたはフェッチされたかどうかに関係なく、デフォルトでallwriteモードになります。 そのため、チェックアウトすることなく、これらのファイルを編集することができます。

allwriteモードで変更されたファイルは、P4Vで「オフライン編集」の場合と同様に処理され、FetchコマンドまたはPushコマンドの実行前に、変更内容が自動的に調整されます。 そのため、FetchコマンドまたはPushコマンドの実行前に、変更がリポジトリにサブミットされることになります。

ただし、作業中チェンジリスト内のファイル(まだサブミットされていないファイル)については、FetchコマンドまたはPushコマンドを実行する前にサブミットする必要があります。 ファイルが保留されている場合は、FetchコマンドまたはPushコマンドを実行する前に、保留を解除してサブミットするか、ファイルを削除する必要があります。

フェッチ操作とプッシュ操作のセキュリティを構成する

複数のサーバ間でFetchコマンドとPushコマンドを実行するには、各サーバで認証とアクセス権限を正しく設定する必要があります。

  • リモートサーバ上のユーザ名とローカルサーバ上のユーザ名が一致している必要があります。 リモートサーバ上のリモートマッピングで[Remote User]フィールドを指定していない限り、リモートサーバ上のユーザ名とローカルサーバ上のユーザ名はデフォルトで同じになります。
  • 対象のユーザがリモートサーバ上に存在している必要があります。
  • リモートサーバ上で、対象ユーザにread (Fetch)権限とwrite (Push)権限が設定されている必要があります。
  • リモートサーバと個人サーバの両方で、server.allowpush構成とserver.allowfetch構成がオンに設定されている必要があります(デフォルトではオフになっています)。

コピーする内容を指定する

リモートマップ内で異なるマップ動作になるようにディポマップパターンのローカル側とリモート側を変更し、ファイル仕様またはストリーム名を指定した場合、個人サーバのディポシンタックスを使用して、filespec引数またはストリーム名を指定する必要があります。 ファイル仕様では、ファイルシステムシンタックスやクライアントシンタックスではなく、必ずディポシンタックスを使用する必要があります。 詳細については、「リモートマッピングについて理解する」を参照してください。

フェッチ操作とプッシュ操作でコピーされる内容

指定したファイルセットのほかに、それらのファイルをサブミットしたチェンジリストや反映レコードをサーバからフェッチしたりサーバにプッシュした場合も、以下の項目がコピーされます。

  • 属性
  • チェンジリストに関連付けられているすべての修正(ただし、修正によってリンクされたジョブが、ローカルサーバ内にすでに存在している場合のみ)
注意

ファイルの圧縮と解凍を行った場合も、属性と修正記録がコピーされます。