|
This is a partial review of Practical Perforce by Laura Wingerd, published by
O'Reilly (ISBN 0-596-10185-6). The reason it is partial is that I intend to
comment in more detail in future blog articles on some parts of the book, and
wanted to post this without waiting for the whole thing!
As Laura mentions in the preface, the book is not intended for complete
beginners, but more for readers with experience in other SCM (software
configuration management) tools who are looking to understand how Perforce
works.
To quote the introduction, there are two parts to this book:
- Part I (Chapters 1-6) is a whirlwind technical tour of Perforce commands
and concepts. It's not a tutorial, nor a reference, but helpful nonetheless.
- Part II (Chapters 7-11) describes the big picture, using Perforce in a
collaborative software development environment. It is particularly strong on
branching patterns, how to structure codelines and tips and tricks in this
area.
The real meat of the book for most Perforce sites is thus Part II, but there
are definitely some goodies in Part I.
Chapter 1 presents some fundamentals about Perforce syntax and concepts. The
diagrams on pages 6 &7 explain the relationship between revisions and
changelists very well.
In Chapter 2, Laura discusses client workspaces and things like view syntax.
She also describes basic check outs (open for edit in Perforce command line
parlance), and introduces branching when she refers to cloning of files. She
includes concepts of renaming and replacing content in files, reconciling
changes made offline, and even introduces a couple of bits of undocumented
syntax such as "p4 files @=1452". Quite a chunk of information in this chapter.
Resolving and Merging are the subject of chapter 3 and includes some very
useful diagrams showing various scenarios. If you have ever had any questions
about 3-way merging in Perforce - read this! On pp68-69 she gives examples of
reconciling changes you have made to a file someone else renamed using the
undocumented merge3 command - interesting if a touch esoteric (also referred to
in "How to undo a merge" on p80. The recommendation on p74 to sync and resolve
one changelist at a time is certainly worth considering, although I think it
will depend on your environment as to how necessary that is.
The basics of branching are covered in chapter 4 including initial scenarios
and how to track merge requirements across branches. She makes quite a lot of
use of the interchanges command (not yet exposed in the GUIs) and explains the
gory details of "yours", "theirs" and "base" nicely. Her approach of using
filespec integrations for the initial examples is nice and simple, but I suspect
more people are likely to use branch specs in real life. On p111 she gives a
useful couple of commands to show how to find which changes have been merged in
(more likely to be automated in scripts for most sites I would expect). Other
subjects ocvered include all the gory details of what integrate actually does,
as well as some very useful details as to what the interchanges command can tell
us, particular with respect to cherry picked integrations.
Chapter 5 is quite short on labels and jobs and shows all the basics. A quick
note on the final section where a job is used as a reference for a changelist -
as of release 2005.2 there is an undocumented "dynamic label" option where a
label can have an attached revision which probably makes the job trick
unnecessary.
Chapter 6 gets into the subject of remote depots and proxies and also
mentions the very useful spec depot option (automatic versioning of all spec
objects). There is also some good advice on using p4web in browse mode to access
your repository. The section on triggers and automation is a little light, but
understandable.
Part II starts with Chapter 7 "How software evolves". This chapter is perhaps
the highlight of the book, and introduces concepts that are totally independent
of Perforce and apply to many SCM tools. Fortunately the chapter is currently
available as a
free PDF document from the O'Reilly website for the book. A firm
understanding of the concepts introduced here will make it much easier for you to
come up with suitable branching patterns for use in your organisations, and
also, perhaps more importantly, give you some incredibly useful concepts for
explaining your structure to other people within the organisation. Most SCM
problems are due to poor communication rather than poor tools, or poor ideas.
Laura relates the problems in the real world prevent us from an overly
simplistic ideal world, and yet how some simple concepts allow us to manage this
real world complexity. The "flow of change" and the "tofu scale" are classic
concepts which should be in everyone's SCM vocabulary.
Summary
I am going to stop this post here, and will get to further chapters and some
detailed comments on them as I have time.
But I will finish with the recommendation - buy this book!!
|