P4/P4V備忘録

仕事柄よく使うことになるP4V,P4の備忘録です。
主にクライアントとしてSyncやSubmitなどをしたりする人向けです。

#P4V
##番号からチェンジリストの内容をサクッと見たい！
おもむろに **Ctrl+G** を押して

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/464248/65924e66-cda5-b622-5180-bdb5dc2efeb9.png)


CL番号をコピペしてOKをクリック！
対応したChangeListが表示されます。

##ストリーム中にどこかにあるファイルを開きたい！
このストリームの奥深くにある「ファイル名だけが判っているファイル」を探したいときは
ストリームを選択した状態で、 **Shift+Ctrl+F**
※ストリームを選択した状態ならFindFileウィンドウ中のPathが自動入力されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/464248/cffe32a7-a0d4-fc97-d37b-6c7ffdf6436b.png)


Name matches any of the following というところにファイル名を入力してエンター！

##DepotTreeにRelease-xx.1みたいなhotfixが無いんだが
マイナーバージョンはgithubでいうtagsに相当するVirtualStreamとして扱われています。
そのためDepotTreeには表示されません。(MainlineやRelease、Developだけ？)
Streamsウィンドウなどを開いて名前で検索してみてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/464248/d96192e7-d8fa-ca24-0158-7258f38f08c3.png)

##編集中のファイルをP4Vで見たい
ローカルのワークスペース内のファイルであれば
エクスプローラーでファイルをコピーした状態か、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/464248/9f7b985e-7a9b-47ae-ad5c-d7998f301019.png)

ファイルのフルパスをクリップボードに入れた状態で
↓VisualStudioはファイルのタブを右クリックしたメニューにあります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223804/e845dca3-327e-9fc7-593b-2bcb0e445468.png)

↓sublimeは編集ビューで右クリックしたメニューにあります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223804/db9d791a-8646-6adf-79fb-6543e167ac46.png)

P4V上のWorkSpaceビューをフォーカスした状態でCtrl+vを入力すると
そのファイルを選択した状態になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223804/84c6ae1a-0b38-18f5-c0c7-abb931479cf7.png)

##P4Vを起動しようとすると勝手に前回接続したサーバーに接続してしまい、別のサーバーを選択できない。
Preferenceで「前回接続したサーバーに接続する」という設定が有効になっているときに起こる。
運用上あまりサーバーを頻繁に変えることはないが、テスト用にサーバーを立てたりしたときにこの状態に陥ることがある。
回避方法としてはp4vにコマンドラインオプション `p4v.exe -p [サーバー名:ポート名] -P [パスワード] -u [ユーザー名]` を与え接続可能なサーバーに接続する方法がある。
https://community.perforce.com/s/article/2871

※勝手に接続した後 「Reconnect」と「CloseP4V」しか選べないエラーダイアログはどうなんだろう。
Connection選択画面に移動する選択があっても良くないかな。

#P4
##ローカルでどこまでSyncしてあるのか調べる : p4 changes

```p4 changes [-m 1] #have``` 
`-m n`オプションを追加すると最新n件表示になります。

```
e:\dev\myengine\Engine\>p4 changes -m 1 #have
Change 123456 on 2020/11/22 by Someone@somewhere 'comment comment comment'
```

##ローカルでどこまでSyncしてあるのか調べる(その2) : p4 cstat

**※P4VでどこまでSyncしてあるのか簡単に調べる方法があると嬉しい**

https://www.toyo.co.jp/files/user/img/product/ss/help/perforce/r15.1/manuals/cmdref/p4_cstat.html

ローカルに所持しているバージョンを表示する
`status have`がローカルに持ってるやつで、`need`がローカルに無いもの。

```
... change xxxxx112
... status have

... change xxxxx125
... status have

... change xxxxx664
... status need

... change xxxxx721
... status need

```



##ワークスペースのお掃除 : p4 clean
https://www.toyo.co.jp/files/user/img/product/ss/help/perforce/r15.1/manuals/cmdref/p4_clean.html

ファイルをまっさらな状態に戻すコマンド。
どの状態のファイルを戻すかをオプション選択できる。

###-d
消しちゃったやつを戻す
###-e
チェックアウトしてないのに編集しちゃったものを戻す

##チェックアウトせずに編集しちゃったファイルを探して編集状態にする : p4 reconcile
https://www.toyo.co.jp/files/user/img/product/ss/help/perforce/r15.1/manuals/cmdref/p4_reconcile.html
https://www.perforce.com/manuals/v14.2/cmdref/p4_reconcile.html

チェックアウトせずに編集し、syncしたりするとローカルの編集が消えて悲しみに包まれたりします。
そういう横着者は更新前にreconsileでチェックアウト状態にしましょう。

###-e
チェックアウトしてないのに編集しちゃったものを戻す
###-a (個人的にはp4vの対話式でやったほうが安全だと思う)
ローカルで足してしまったファイルを追加してチェックアウト
###-d (個人的にはp4vの対話式でやったほうが安全だと思う)
ローカルで削除したファイルを削除状態でマークしてチェックアウト

##p4 sync
未定

##p4 submit
未定

#こういうことができるといいんだけど

・P4VでどこまでSyncしてあるのか簡単に調べる方法
・コミットログを検索する