2013-04-23 21 views
7

未送信の変更を送信する前に、未送信の変更を送信する良い方法はありますか(git stash,git checkout otherbranch,git stash pop)?Perforce:別のストリームへの未送信の変更の移動

私は現在、ファイルをローカル(非排他的)にチェックアウトして編集しています。私はそれらを棚上げしようとしているし、それらを目標ストリームにunshelveしようとしているが、私は "クライアントビューではないファイル"を取得します。チェンジリスト(shelvedまたはnot)を表示すると、ファイルにはすべて元のストリームを含むパスがあります。

ターゲットストリームは、作成したばかりのストリームで、元のストリームを親ストリームにします。私はP4Vを使用しています。私がインストールしたPerforce Visual Componentsのバージョンは123.57.9578です。コマンドラインからp4を実行すると、「Server 2012.2/551823」と表示されます。必要に応じてさらに情報を追加できます。

答えて

1

シェルフ/アンシェルプ技術には2012.2サーバではなく2013.1サーバが必要です。これは、PERFORCEのテクニカルサポートで確認する必要があります。

+0

答えをありがとう。残念ながら、私達が "PERFORCE王様"が現在、PERFORCEカンファレンスとは何か - P – entheh

+0

がPERFORCEの古いバージョンで動作しているので、これを確認する前に来週まで待つ必要があるようです。ただし、ブランチルートを含む同じパスにのみアンヘルブすることができます。したがって、別のブランチでアンヘルブできません。 –

5

p4 unshelveコマンドを使用すると、-Sオプションを使用してチェンジリスト内のシェルビーファイルを別のストリームに再マップできます。例:

p4 unshelve -s <changlist#-with-shelved-files> -S //depot/streamname 

特定のバージョン以上でのみ使用できるかどうかは不明です。しかし、私たちはP4Vを通じてそれを行う方法を見つけることができませんでした。

1

P4Vをコマンドラインよりも快適に使うためには、少なくともP4V 2014.2のGUIでaz2tonezの解決策を実行することができます。

  1. チェンジセットをシェルフして、ワークスペースに他のファイルがチェックアウトされていないことを確認してください。
  2. [ストリーム]タブで、現在のストリームのワークスペースアイコンを、変更をからに移動するストリームにドラッグし、最新の変更を取得します。
  3. [保留中]タブのファイルを元に戻します。オプションの下で「unshelvedファイルをマップする」を選択し、チェンジセットから移動したいストリームを選択し、「元に戻す」を押します。
  4. ソースを使用してファイルを解決してください。
  5. 変更を送信してください。あなたの変更はもう一方のストリームにあるはずです。
3

他の回答は正しいものの、ストリームから棚上げして無関係なストリームを取り除くことができないという警告は表示されません。特に、元のポスターは、適切なマッピングを選択していないときにP4Vが表示するエラーメッセージであるエラーメッセージ "クライアントビューにないファイル"について尋ねました。

適切なマッピングを見つけるには、以下の手順が必要です。非保守ストリームは、保留ストリームと直接的な親子関係を持っていなければならず、「非保守ファイルをストリームを使用してマップする」でその関係を記述するストリーム仕様を選択する必要があります。 。 "ダイアログの一部。つまり、元のシェルビーストリームからターゲットストリームに到達するまでには複数のホップが必要です。

具体的な例です:ファイルをDev-1に保存して、Dev-2に移動したいとしましょう。これらの2つのDevストリームは両方ともMainの直接の子です。Dev-1のファイルをDev-2に直接unshelveすることはできません.Devストリームの仕様では、両方とも関係がMainであり、お互いに関係なく記述されているため、最初にunsherveしてからMainに一時的に戻す必要があります。

したがって、Dev-1のファイルはMainに「Dev-1を使用してアンシャローファイルをマップする」と指定しています。この仕様では、通過する関係が記述されているためです。次に、ファイルをMainに格納し、ワークスペースをDev-2に切り替えます。これで、MainからDev-2への直接的な関係が記述されているため、シェルブファイルのMainバージョンを「ストリームを使用してアンサーベイファイルをマップする」でアンシェルできるようになりました。

複数のホップを使用すると、ネットワーク内の他の接続ストリームにアクセスできます。これはgit stashgit stash popと同じくらい簡単ではありませんが、gitはgitブランチ間でファイル名が変更されないと仮定していますが、Perforceでは各ホップがファイルとフォルダのマッピングを任意に変更できます。

+1

答えをありがとう。私は移動し、Perforceを使用しなくなったので実際にコメントすることはできませんが、このような場合にGitが名前を変更してファイルを非常にうまく処理したと言いたいとします。もちろん、PERFORCEは独自の強み(特に部分的な見解)を持っていますが、これはその一つではありませんでした! – entheh

関連する問題