When my company evaluated Perforce (and switched to it partly due to my recommendation), I was glad to see the notion of the changeset. A number uniquely represents the entire state of the tree. If I had realized that they don't actually use that number for _anything_ I might have reconsidered. Labels are not based on changesets, but on individual versions of files. It is very complicated to figure out what changeset corresponds with a given label, or possibly a set of labels, since it is completely willy-nilly.
We've cut out the use of labels (at least from a CM perspective) and solely use branch/changelist combos, pretty much for that reason. That's really the only concrete, unchanging way to refer to a version of a file in Perforce. Also, since the owner of a label can move it at any time it's not 100% trustworthy.
But it is kinda weird sometimes, like David says. The changelist numbers really refer to a point in time. Without actually looking at a changelist, the versions of files in Perforce do not indicate how/when they were submitted, if that makes sense. I can't think of any other metadata in Perforce that refers to a changelist number aside from the changelist itself.
I thought the branches and directories melding was a neat idea, at first, but have basically concluded it was actually a really bad idea.
I think it's good and bad, depends on the situation. We deal with very few branches. We kinda call them 'streams' and merge whole changelists from dev->qa->staging/production. It works well if you properly train and discipline (rolled up newspaper) your developers to limit changelists to one bugfix. But if that doesn't happen you are rightfully screwed. What helps us is that we require a bug to be attached to every changelist so when it's time to release we have an automatic record of what's in the build (and thus what needs merging.) Difficult to do that effectively using Perforce alone.
Why can't the version-control repository detect file renames transparently?
I can't remember what the context of this question was, but this has to be my one (personal) big complaint about Perforce. I mean, I love Perforce. It's attractive to Windows shops and I can sneak a Linux server in there. But the fact that there is no rename, and they just end up being a branch and a delete, that's just wrong. Re-factoring code in Perforce then going back to a previous arrangement really sucks. There's no other word for it.
-Matt -- [email protected] http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-list
