2

CL1000のPERFORCEシェルフがあります。不明なCLXで他の誰かによってシェルフされました。

私はCL2000にいます。Xが何であれ同期して1000のシェルフを解除したいので、コードはシェルフされたときとまったく同じになります。どうすればよいですか?

4

1 に答える 1

3

残念ながら、クライアントのワークスペース全体が棚上げ時に1つのチェンジリストだけに同期されたという保証はありません。極端な場合、異なる変更番号で各ファイルを同期できた可能性があります。

とは言うものの、それらはおそらくある時点に同期されており、シェルフ内のファイルのリビジョン番号からこれを推定することができます。

$ p4 files @=1000
//depot/foo/bar.txt#3 - edit change 1000 (text)
//depot/baz/quux.c#5 - edit change 1000 (text)

ファイル名の後のリビジョン番号は、ユーザーが編集のために開く前に同期した各棚上げファイルのリビジョンを示します。

次に、p4 files各ファイルパスとリビジョンで実行して、変更番号を取得できます。

$ p4 files //depot/foo/bar.txt#3 //depot/baz/quux.c#5
//depot/foo/bar.txt#3 - edit change 983 (text)
//depot/baz/quux.c#5 - edit change 998 (text)

2番目のコマンドから最大の変更番号を選択し、クライアントをそれに同期してみてください。

上記の警告

それらが単一の時点に同期したと仮定しても、上記は絶対確実ではありません。998以降および1000より前の変更に同期したことのみを示します。

999を変更するために同期したとしましょう。クライアントワークスペースは次のようになっている可能性があります。

$ p4 have
//depot/an/otherfile#7 - /home/user/a/an/otherfile
//depot/foo/bar.txt#3 - /home/user/a/foo/bar.txt
//depot/baz/quux.c#5 - /home/user/a/baz/quux.c

さらに、otherfileをリビジョン7に更新したのは変更999であり、変更999にはotherfileのみが含まれていたとしましょう。

otherfileはシェルフされておらず、上記の最新のシェルフされたリビジョンは変更998からのものであるため、クライアントワークスペースが変更998または変更999のどちらに同期されたかをシェルフに基づいて判断することはできません。

さらに大きな注意点は、異なるファイルを異なる変更番号に同期すると、これがすべて崩壊することですが、通常、人々はそうしません。

于 2011-09-14T03:01:24.370 に答える