2017-01-10 8 views
0

私は自分の作業スペースをclに同期させたいが、作業スペース上のclよりも古いファイルだけを同期させたい。 clより新しいファイルはすべて無視する必要があります。どうやってやるの?私は命令が必要です。よろしく。クライアントが古いバージョンを持っている場合にのみ、PERFORCEでファイルを同期する方法は?

+0

特定の変更リストによって特別に変更されたファイルのみを更新したいファイルはありますか? –

+0

ただ、我々は3つのリビジョンを持つファイルがあると、私は右のユースケースを理解していることを確認する: #3変更300 #2変更200 #1の変化100 をそして、あなたは200を変更するために、あなたのプロセスを適用したいです、これは200に同期させることですが、逆方向に同期させたくないという制約があります。私。ファイルが現在#0または#1に同期されている場合は、それを#2に同期します。ファイルが現在#2または#3に同期されている場合は、そのままにしておきます。また、これをワークスペース内のすべてのファイルに適用したいとします。 そうですか? –

+0

@SamStaffordはい。それがアイデアです。 –

答えて

1

通常、チェンジリストとの同期は非常に簡単です。

p4 sync @CL 

しかし、あなたが探しているのは、あなたがどのリビジョンが逆方向に行くにしたくない特別な例外を除いてチェンジを同期することです:あなただけやると思います。このコマンドでほとんどの方法を得ることができます:

p4 synC#have,@CL 

Ie. "> =#があり、< = @ CL"のすべてのリビジョンを同期します。

これは、#haveが存在しないファイルです(#haveを使用する範囲には含まれません)。これらはトリッキーですが、これはそれを行うための一つの方法です:

p4 -F "%code0% %depotFile%%depotRev%" sync -n @CL | grep "^318773588 " | sed -e "s/318773588 //" | p4 -x - sync 

(これは魔法のように見える場合、それは - = 318773588 CODE0は、ファイルがかなりの同期で、「追加」されたときに放出されるメッセージコードです「更新」されているよりも、何の#haveのrevが存在しない場合にのみ発生している。私は-eグローバルオプションを使用して、この数を得た。)


全く異なるアプローチが、「その事実を利用することであろうファイルが編集用に開かれているときに、作業用のリビジョンを後方に移動させません:

p4 edit //... 
p4 sync @CL 
p4 -F %depotFile%%workRev% opened | p4 -x - sync 
p4 revert -a 

これらのファイルを編集用に開いてから元に戻すと、何千ものファイルがある場合に無視できないほどの時間がかかりますが、少しマジックスクリプトが必要になります。ちょっとややこしいのは、3番目の行です。「私のhaveRevがすべての開いているファイルに対して私のworkRevとマッチするようにしてください」 - つまり、syncが後方に移動しようとしたファイル(つまり、hasRevがworkRevより小さい)あなたが元に戻る前に、より高いhasRev。

+0

これは、デポ全体を、clが送信された時点に同期させます。 ** _ CL _ **バージョンよりも新しいバージョンのファイルを無視するようにします。 –

+0

編集を参照....... –

+0

うわー。ありがとう!だから、318773588は右に変わらない定数ですか?私は、PERFORCEバージョン間で、そして異なるサーバー間で意味します。 これらの2つのコマンドで作業を行う必要があります。 'p4 sync#0、@ 1234' ' p4 -F "%code0%%depotFile %% depotRev%" sync -n @ 1234 | grep "^ 318773588" | sed -e "s/318773588 //" | p4 -x-sync' ここで、1234はCLであり、すべてのバージョン> = 0を同期したいです。 'p4 sync#none、@ 1234'を試してみるとどうなりますか よろしくお願いします。 –

関連する問題