私は自分の作業スペースをclに同期させたいが、作業スペース上のclよりも古いファイルだけを同期させたい。 clより新しいファイルはすべて無視する必要があります。どうやってやるの?私は命令が必要です。よろしく。クライアントが古いバージョンを持っている場合にのみ、PERFORCEでファイルを同期する方法は?
答えて
通常、チェンジリストとの同期は非常に簡単です。
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。
これは、デポ全体を、clが送信された時点に同期させます。 ** _ CL _ **バージョンよりも新しいバージョンのファイルを無視するようにします。 –
編集を参照....... –
うわー。ありがとう!だから、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'を試してみるとどうなりますか よろしくお願いします。 –
- 1. ローカルファイルが古い場合にのみファイルをダウンロードする方法
- 2. は、Linux上で古いCURLのインストール方法(私は古いPHPのバージョンを持っている)
- 3. Rubyアプリケーションが古いバージョンのRubygemに依存する場合は、
- 4. 新しいバージョンも利用できる場合、GACで古いバージョンのアセンブリを使用する方法?
- 5. セレン/ TestNGの方法:以下を持っている場合は、XMLファイル
- 6. のみ、私は次のモデルを持っている場合Json.Net
- 7. gitを使って古いバージョンを維持する
- 8. APKのみを持っている場合のバンドルIDの変更方法
- 9. ドライバ/クライアントがサーバと同じバージョンのjava.util.concurrent.RejectedExecutionExceptionを持っています
- 10. 三つのファイル持っている別のファイルにする場合には
- 11. Mercurial、古いバージョンのファイルにタグを付ける方法
- 12. マスターが同期していない場合、ブランチにチェックインする
- 13. Input.touchCountは、私はこのコードのバージョンを持っている場合
- 14. EventWaitHandleを持っている場合はロックが必要です
- 15. Nodejsが同期または非同期を知っている方法
- 16. パンダ:行が同じランクを持っている場合はアルファベット順にソート
- 17. 古いバージョンのiOSを使用しているユーザーに古いバージョンのアプリケーションをダウンロードさせる方法
- 18. ページを居住者にする方法(サーバーを持っていない場合)
- 19. 私は/ blog/URIを持っている場合にのみサブディレクトリにリダイレクトする方法
- 20. 古いxCodeバージョン9よりも古いxCodeバージョンのアプリケーションをテストする方法
- 21. NotesException:サーバ上の古いバージョンがこのメソッドをサポートしていない場合
- 22. ビジュアルスタジオがフルスクリーンモードの場合、タスクバーを「常に上に」持っていく方法は?
- 23. すべてのサブセットが、私が持っている場合は
- 24. 古いSonarQubeバージョンを使用している場合、SonarQubeスキャナの使用方法は?
- 25. GHCで古いバージョンの関数のみを定義する方法は?
- 26. 同期(古い方法)Ext.form.Panel送信
- 27. インストールされたActiveXの古いバージョンがある場合にActiveXインストールプロンプトを表示する方法
- 28. 2つのAndroidパブリッシャーアカウントを持っている場合は合法ですか
- 29. GitHub Windowsクライアントで同期されていないコミットを同期する方法は?
- 30. バージョンが古い場合はmakefileを終了してください。
特定の変更リストによって特別に変更されたファイルのみを更新したいファイルはありますか? –
ただ、我々は3つのリビジョンを持つファイルがあると、私は右のユースケースを理解していることを確認する: #3変更300 #2変更200 #1の変化100 をそして、あなたは200を変更するために、あなたのプロセスを適用したいです、これは200に同期させることですが、逆方向に同期させたくないという制約があります。私。ファイルが現在#0または#1に同期されている場合は、それを#2に同期します。ファイルが現在#2または#3に同期されている場合は、そのままにしておきます。また、これをワークスペース内のすべてのファイルに適用したいとします。 そうですか? –
@SamStaffordはい。それがアイデアです。 –