The day before yesterday I finished reading “Practical Perforce” (by Laura Wingerd, from O’Reilly books). I liked it more than I thought I would. My first impressions of Perforce, hadn’t been that favorable, mostly because of its unusual paradigm of keeping track of client workspaces, which can lead to a lot of unintuitive behavior. Reading the book helped solidify my understanding of Perforce’s view of the world and demonstrated that Perforce can be a very powerful tool. For sure there are warts, like the sometimes strange syntax of the
p4 integrate command and a section that was downright humorous, showing how simple it is to back out a change, using 7 commands piped through various
sed filters (in fairness, backing out changes in CVS is also complicated and actually much worse because CVS doesn’t have changelists – I wonder if any version control system has bothered to actually make the simplest of tasks actually simple. At work we have a p4 wrapper command, written in Perl, that adds a backout command, but I wonder why Perforce doesn’t build this simple feature in?).
The best part of the book for me was the later chapters, where the book describes the bigger picture of managing branches in shrink-wrap and Web development software shops. A lot of the material in these last few chapters is about general SCM and branching methodology and is largely independent of what version control system you’re using, though naturally this book concentrates on the application of this methodology with Perforce.