0

免責事項:質問を開いたままにしましたが、分岐が遅いという問題は、サーバーが過負荷になっていることが原因でした。したがって、これは Perforce の通常の動作ではありません。現在、10,000 個のファイルを分岐するのに約 30 秒かかります。

私は Perforce 2014 の新しいユーザーです。ストリーム デポを作成し、レガシー アプリケーション (約 10,000 個の cpp ファイル) を開発ブランチに配置しました。最初のインポートは比較的速く、すべてをアップロードするのに約 1 時間かかりました。

ここで、新しい機能に取り組むための「軽量」タスク ストリームを作成したいと考えています。デフォルトのメニュー > 新しいストリーム > タイプ タスクを使用します...「ストリームの作成時に親からファイルを分岐」を選択します

驚いたことに、すべてのファイルを個別に分岐しているため、新しいタスクを作成するにはかなりの時間がかかります (約 1 時間)。このプロセスは、他の SCM ツールを使用するとほぼ瞬時に完了すると思います。(git、svn、...)

今私の質問は:

  • これは予想される動作ですか?
  • または、より迅速にタスクを作成し、変更する予定のファイルのみを分岐する方法はありますか?
4

2 に答える 2

2

同期されたワークスペースから開始すると仮定すると、実際のファイル コンテンツは転送されないため、10k ファイルの新しいタスク ストリームの作成は非常に迅速な操作 (1 ~ 2 秒程度) である必要があります。新しいストリーム用にまったく新しいワークスペースを作成している場合、新しいワークスペースの作成の一部としてファイルの同期が行われます。同じ量のデータが転送されるため、送信と同じくらい時間がかかると思います。

新しいストリームを作成するときは、新しいワークスペースを作成していないことを確認してください。ビジュアル クライアントには、「ワークスペースを作成する」オプションがあります。そのボックスのチェックを外してください。そうしないと、新しいワークスペースが作成されてから同期されます。これには 1 時間かかります。

//stream/parent のワークスペースから開始して、コマンド ラインから新しいタスク ストリームを作成するには、次のようにします。

p4 stream -t task -P //stream/parent //stream/mynewtask01
p4 populate -r -S //stream/mynewtask01
p4 client -s -S //stream/mynewtask01
p4 sync

「ストリーム」コマンドと「クライアント」コマンドは、実際にはファイルを操作しないため、何があっても非常に高速です。「populate」は 10,000 個のファイルすべてを分岐しますが、実際にコンテンツを移動することなくバックエンドで分岐するため、非常に高速です (数百万または数十億に達した場合、かなりの量の作業が必要になる可能性があります)。時間はサーバー ハードウェアによって異なりますが、10k は何もありません)。すべてのファイルが既にそこにあるため、//stream/parent に既に同期されている場合、「同期」は非常に高速です。繰り返しますが、ファイルの内容を転送するのではなく、サーバー側でポインターを移動しているだけです。

于 2015-09-21T22:24:24.737 に答える
0

私は回避策を見つけました。これは物事を少しスピードアップし、実際に私がやろうとしていることに近いです:

タスク ストリームは、デフォルトで次の「ストリーム ビュー」で作成されます。

share ...

私はそれを

import ...
share /directory/I/actually/want/to/modify/...

そのため、ほとんどのファイルの分岐をスキップしましたが、正常に機能しています。

于 2015-09-22T08:32:43.713 に答える