Perforce does not have branches.
Yes, it has 'p4 branch' and 'p4 branches' commands, but these deal
with *branch views*, which are simply mappings from Here to There --
they allow you to specify on the command line a single label instead
of two pathnames. In essence, they're glorified macros.
Actually, macros would be a better system than Perforce branch
views. You could define a shell variable for each "branch", and then
"p4 integrate $foo $bar" (which is no less readable than "p4
integrate -b foo-bar"), and the reverse is "p4 integrate $bar
$foo" (a slight improvement over "p4 integrate -r -b foo-bar").
Now, what if you have three "branches"? Then you define $foo, $bar,
and $baz, as opposed to branch views foo-bar, foo-baz, and bar-baz.
It's already tricky to remember what the names of the branch views
are (i.e. which "branch" comes first), and with four "branches"
you've got six possible branch views versus only four shell variables.
Imagine if you had a different checking account for each person or
business you wrote checks to... and you paid for everything by
check. Welcome to Perforce branch views.
I carefully put the word 'branch' in quotes, because, as I've said,
Perforce does not have branches.
I repeat: Perforce does not have branches -- at all. What it has is
integration.
Integration is a means of propogating changes from one file to
another. What you're pretending to be a branch is just a directory
tree, maybe in the same parent directory as other directories which
you're pretending are different branches of the same thing. It's an
illusion, and one that you must maintain yourself. Perforce is happy
to integrate changes from any file to any other file, even if it
breaks the metaphor.
What I hate the most is that everybody still uses Perforce anyway[1],
even though the deficiencies don't get addressed[2], even when much
better free alternatives exist, due I guess to inertia and the cost
of switching.
Perforce is the Windows of version control.
Josh
[1] The perl 5 codebase has moved from Perforce to git. But employers?
[2] How do you reverse a submitted change?