Shelving operations in P4V

I found very good feature in perforce about Shelving operations in P4V. This is something id deport is not ready to check in the src code due to release or code freeze, still you can store changes in depot without check in.

Tagged : / / / /

“Cheat Sheet” of Perforce command-line | Perforce command-line Guide


A way to remember data-mining commands
The following is a set of questions that will be used during the Perforce training to remind students which “data-mining” commands to use for specific situations. Perforce is a terrific tool, but it’s easy to get lost in the choices between “p4 files” and “p4 changes” and “p4 filelog” and so on. This list can help a great deal.

the question starts with…
the answer starts with…
“What are the filenames that…?” “p4 files….” p4 files //depot/…#have
p4 have
p4 files //depot/…
(which is the same as)
p4 files //depot/…#head
p4 files //depot/…@label
p4 files //depot/…@client
p4 files //depot/…@2001/02/12
p4 files //depot/…@1541
“What are the differences between the
workspace copy of XXX and the depot
copy of XXX?”
“p4 diff …” • p4 diff file.c
• p4 diff file.c#2
• p4 diff file.c#head
• p4 diff //… or “p4 diff”
• p4 diff –se
“What are the differences the depot copy
of ______ and the depot copy of ______?”
“p4 diff2 ….” • p4 diff2 file1.c file2.c
• p4 diff2 file1.c#1 file.c#2
• p4 diff2 dir1/… dir2/…
• p4 diff2 dir1/…@now dir1/…@2000/01/02
“Tell me everything about changelist #___.” “p4 describe” • p4 describe 1231
“What’s a list of changelists that….?” “p4 changes….” • p4 changes
(which is the same as)
p4 changes //…
• p4 changes file.c
• p4 changes –i file.c | grep 1255
• p4 changes //depot/…@label1,@label2


“Cheat Sheet” of Perforce command-line
The following list is a set of helpful commands that anyone can run, but that the person administering the Perforce codelines will
be using a lot. They’re included here for quick reference.

Create a new workspace…
1. That’s modeled after the
“1.0dev” workspace – same
2. That’s the Perforce defaults,
Set the workspace name using “p4 set” or in the environment. Then run:
1. p4 client –t 1.0dev
2. p4 client
Retrieve a file as of
1. Now (head revision)
2. April 15, 2000
3. Label “xyz”
4. Changelist 123456
5. the revision that client
“” has retrieved
6. The revision you had before
accidently bashing your disk
Use “p4 sync” as follows:
1. p4 sync
p4 sync
p4 sync
2. p4 sync
3. p4 sync
4. p4 sync
5. p4 sync
6. p4 sync –f
See “p4 help revisions” for more examples. Note that anywhere that “” is used in these
examples, a full pathname (“c:\work\projects\”) or depot name
(“//depot/rel_218/base/projects/”) could be used.
Open a file for:
1. add
2. edit
3. delete
And then publish the change to others
Use “p4” with the appropriate verb:
• p4 add
• p4 edit
• p4 delete
Then “p4 submit” to publish it
What have I changed in the files I
have opened for edit?
• p4 diff (for all opened files)
• p4 diff file1 file2 (for specific files)
Undo a checkout. If the file hasn’t been submitted yet:
• Use “p4 revert –a” to find all opened files that have no modifications – it’ll revert those.
• Use “p4 revert” to revert an individual file.
• Use “p4 revert //…” to revert all files.
Remember that “p4 revert” is irreversible.
If the file has been submitted, you’ll need to open the file for edit and check in a prior revision.
Use very good change descriptions to say what you did and why.
Interrupt your work to edit a single
file and check it in, without any other
disruptions. (You’re hacking Java and
someone needs a “relnotes.txt”
updated ASAP to issue a release.)
Two ways:
1. Edit the file and submit only that file.
• p4 edit relnotes.txt
• do the modifications
• p4 submit relnotes.txt
2. Make a new changelist to manage just that change.
• p4 change
remove all the files in this change from the Files: section, it’ll create an empty
• p4 edit –c XXX relnotes.txt
where XXX is the change number in the previous step
• p4 submit –c XXX
Publish your work to others “p4 submit”
Compress the data on the net
because you have a slow modem line
between your workspace and the
Run “p4 client” for your workspace, and change the options from “nocompress” to “compress”.
(Read “p4 help client” for details.)
Get the list of…
1. All changelists applied to the
base codeline
2. … to the prodxyz codeline
3. … to the prodxyz codeline,
including those applied
originally to another codeline
and integrated into prodxyz
4. All revisions of
Use “p4 changes” or “p4 filelog” as follows:
1. p4 changes //depot/eng/…
2. p4 changes //depot/eng/prodxyz/…
3. p4 changes –i //depot/eng/prodxyz/…
4. p4 filelog
Push … from the base codeline
(“prodxyz”) to the 1.0.1 codeline
1. Push change #1232
2. From change #129 to #134
3. all changes in the base
Use “p4 integrate –b prodxyz-1.0.1” as the place to start, in each case:
1. p4 integ –b prodxyz-1.0.1 //…@=1232
2. p4 integ –b prodxyz-1.0.1 //…@129,@134
3. p4 integ –b prodxyz-1.0.1 (no additional args)
Note that this assumes that the named branch specification “prodxyz-1.0.1” has been created
by your project lead or administrator using “p4 branch”.
Push … from the prodxyz-1.0.1
codeline to the base (“prodxyz”)
1. Push change #1235
2. From change #127 to #128
3. all changes in the base
Use “p4 integrate –b prodxyz-1.0.1” as the place to start, in each case:
1. p4 integ –b prodxyz-1.0.1 –r @=1235
2. p4 integ –b prodxyz-1.0.1 –r //…@127,@128
3. p4 integ –b prodxyz-1.0.1 –r (no additional args)
The “-r” reverses the order of source/target in that named branch specification.
Note that for the ‘selective integration’ cases, you’ll want to be VERY CAUTIOUS of ‘accept
Show the ‘diff’ between the
prodxyz-1.0.1 codeline and its
“p4 diff2 –b prodxyz-1.0.1” (This works because “prodxyz” is the name of the branch
specification, not because “prodxyz” is part of “//depot/prodxyz/…”)
What branches do I have? If you use “p4 branch” to create branch specifications and use them consistently, then “p4
branches” provides this info.
How do I make a new codeline
named prodxyz-2.0?
There are several steps:
1. Make a named branch specification. Save it.
• “p4 prodxyz-2.0”
• if you want to exactly imitate another branch (e.g. prodxyz), use
“p4 branch –o prodxyz-1.0.1 > tmp” to capture the output, edit this temporary file
and replace the “1.0.1” references with “2.0”, then run “p4 branch –i < tmp”.
2. Run the “p4 integrate” command to populate this new codeline. Submit the change.
• p4 integrate –b prodxyz-2.0
or, if you want to push content as of a certain label (e.g. “xyz”) from the parent,
p4 integrate –b prodxyz-2.0 //…@xyz
• p4 submit
3. Send e-mail telling everyone about this codeline and what it’s used for.
Put everything onto a laptop, you’re
going to the beach and want to hack.
(This assumes that you won’t be
connected to a net while away.)
There are several steps:
1. Connect the laptop to the net.
2. Run “p4 sync” to populate the source onto the laptop.
3. Leave for the beach.
4. While editing, use “chmod” or “attrib” to make the files writeable. Make your changes.
5. Get back to work, reconnect to the net.
6. Run the following commands to tell you what’s updated and open them for
• p4 diff –se | p4 –x – edit
• p4 diff –sd | p4 –x – delete
• find . –type f –print | p4 –x – add
Then inspect what’s opened (“p4 opened”) and what you’ve changed (“p4 diff”). Submit or
revert as appropriate.
Run a checkpoint “p4 admin checkpoint” – only an administrator can run this. (An administrator has “super”
permissions in the “p4 protect” data.)
Be sure to back up the checkpoint, the current journal, and each of the “depot” directories on
the server machine!
Change the security/permissions “p4 protect” – only an administrator can run this.
“p4 protects” – used in 2006.1 and later to TELL you your permissions .
Make a label It’s a two-step process:
1. Make the label using “p4 label xxx”
2. Populate it using “p4 labelsync –l xxx”
or if you have a specific list of files,
“p4 labelsync –l xxx file1 file2 …”.
Copy a label’s contents to another
label. Assume that the existing label
is “xxx” and the new label is to be
Again, a two-step process:
1. Make the label using “p4 label –t xxx abc”
2. Populate it using
“p4 labelsync –l abc //…@xxx”
Note that the second step is really identical to the second step in the previous question – we’re
just specifying a very specific list of revisions [of files] to include in the new label.
In 2005.1 and later, “p4 tag” will make the label and apply it to a set of files.)


Tagged : / / / / / / / / / / / / / / / / / /

What makes P4Win better than P4V? – P4V deficiencies


P4V deficiencies compared to P4Win

Here’s list of P4V deficiencies & features missing as compared to P4Win…  

1). In P4V you can’t paste paths onto the tree view as way to quickly navigate to items. The nearest equivalent is to paste in to the address bar but that has the annoying side effect of switching between workspace/depot view depending on the format of the address. 

2). P4V has an inferior (broken) ability to copy paths from depot treeview using Crtl+C. P4V copies the string in a totally un-usable format, P4Win copies it ready for use in command line P4 operations etc. 

3). P4V has inferior drag/drop of filenames from treeview. P4Win allows you to drag/drop filenames in local workspace syntax. P4V on the other hand drags/drops in depot syntax – there does not seem to be any way to quickly get filenames in workspace syntax. 

4). P4V can’t integrate a selection of files, it can only integrate single files or entire folders. 

5). P4V doesn’t provide the ability to sort pending changelist by criteria. 

6). P4V doesn’t offer safe automatic merge when integrating a single file. 

7). P4V doesn’t have a default resolve type. 

8). P4V doesn’t allow use of Enter/Ctrl+Enter to select the default action in dialogs (instead you have to use a mouse or press TAB several times). 

9). Many dialogs lack a Cancel button but escape key, in many cases, does the same thing. 

10). P4V suffers from a general lack of keyboard shortcuts (like Ctrl+Shift+M for resolve). 

11). P4V provides no way to “p4 set” defaults and hence interoperates badly with command prompts and scripts. 

13). P4V has lacks command line features of P4Win. 

14). And finally, IMO, P4V is just a more cluttered interface, you spend forever having to resize, switch views and generally fiddle with things. P4Win was fine!But 2008.2 beta release notes that several more dialogs and column-width settings are remembered now 

15). P4V bookmarks no longer cross depots and don’t have keyboard shortcuts. Under P4Win, I constantly switch my current window between depots and file areas using keyboard shortcuts. I have no idea why P4V separates favorites from bookmarks with neither doing the whole job.Favorites is also intent on opening a new app each time rather than just switching which just clutters my desktop. P4V needs the more powerful bookmark function from P4Win. 

16). There is no P4V “resync to same changelist” menu item. I use this frequently when I am testing something and want to wipe out the source and generated binaries and do a quick re-sync. 

17). There is no P4V menu item to update an existing client’s view from another client. We use this all the time with P4Win to update client views from template clients. 

18). P4V does not show the “Explore” and “Command Prompt here” context menus for folders—just for files. I often use this to open a window for the current folder to do something. 

19). Popping up an editor for a file that is not open for edit no longer says read-only with the revision number in the caption bar in P4V. AuthorRobert Pitt & Barry Wilks

Tagged : / / / / / / / / / / / / / / /