#+TITLE: Perforce layer

#+TAGS: layer|versioning

[[file:img/p4.png]]

* Table of Contents                     :TOC_5_gh:noexport:
- [[#description][Description]]
  - [[#features][Features:]]
- [[#install][Install]]
- [[#key-bindings][Key bindings]]

* Description
This layer integrates =Perforce= SCM system into Spacemacs.

** Features:
- Support for running [[https://www.perforce.com/][Perforce]] (p4) SCM commands directly from Emacs.

* Install
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
add =perforce= to the existing =dotspacemacs-configuration-layers= list in this
file.

You'll have to install the =p4= command line tool from the [[https://www.perforce.com/downloads/helix][download page]].

Don't forget to setup the environment variables:
- =P4_PORT=
- =P4_CLIENT=
- =P4_USER=
- =P4_PASSWD=

* Key bindings

| Key binding | Description                                                  |
|-------------+--------------------------------------------------------------|
| ~SPC p 4 a~ | add a file in depot                                          |
| ~SPC p 4 d~ | delete a file in depot                                       |
| ~SPC p 4 D~ | p4-describe                                                  |
| ~SPC p 4 e~ | checkout a file                                              |
| ~SPC p 4 r~ | revert a file                                                |
| ~SPC p 4 R~ | refresh content of an file. =sync -f=                        |
| ~SPC p 4 S~ | submit CL                                                    |
| ~SPC p 4 [~ | shelve CL                                                    |
| ~SPC p 4 ]~ | unshelve specified CL                                        |
| ~SPC p 4 b~ | create, modify, or delete a branch view specification        |
| ~SPC p 4 B~ | display list of branch specifications                        |
| ~SPC p 4 c~ | create or edit a client workspace specification and its view |
| ~SPC p 4 C~ | display list of pending and submitted CL                     |
| ~SPC p 4 E~ | change the filetype of an open file or move it to another CL |
| ~SPC p 4 @~ | p4-depot-find-file                                           |
| ~SPC p 4 f~ | list revision history of files                               |
| ~SPC p 4 F~ | list files in the depot                                      |
| ~SPC p 4 G~ | display current perforce client name                         |
| ~SPC p 4 g~ | synchronize client with depot                                |
| ~SPC p 4 h~ | p4-help                                                      |
| ~SPC p 4 H~ | list revisions most recently synced to the current workspace |
| ~SPC p 4 i~ | display client/server information                            |
| ~SPC p 4 I~ | integrate one set of files into another                      |
| ~SPC p 4 j~ | create or edit a job (defect) specification                  |
| ~SPC p 4 J~ | display list of all jobs                                     |
| ~SPC p 4 l~ | create or edit a label specification                         |
| ~SPC p 4 L~ | display list of defined labels                               |
| ~SPC p 4 :~ | apply label to the contents of the client workspace          |
| ~SPC p 4 m~ | move files from one location to another                      |
| ~SPC p 4 o~ | list open files and display file status                      |
| ~SPC p 4 p~ | write a depot file to a buffer                               |
| ~SPC p 4 P~ | p4-set-p4-port                                               |
| ~SPC p 4 q~ | quit window                                                  |
| ~SPC p 4 y~ | resolve integrations and updates to workspace files          |
| ~SPC p 4 s~ | identify differences between workspace and depot             |
| ~SPC p 4 t~ | toggle perfore server check when opening files.              |
| ~SPC p 4 u~ | create or edit user specification                            |
| ~SPC p 4 U~ | list perforce users                                          |
| ~SPC p 4 v~ | emacs perforce integration version                           |
| ~SPC p 4 V~ | p4 blame                                                     |
| ~SPC p 4 w~ | show how file names are mapped by client view                |
| ~SPC p 4 x~ | delete a file from the depot                                 |
| ~SPC p 4 X~ | mark jobs done by specific CL                                |
| ~SPC p 4 z~ | p4-reconcile                                                 |
| ~SPC p 4 =~ | p4 diff                                                      |
| ~SPC p 4 +~ | p4 diff on all opened files                                  |
| ~SPC p 4 -~ | p4 ediff                                                     |
