So, I've blogged before about how I'm now working with the subText Project and how we've been doing a lot of work under the hood in preparation for the version 1.0 release, and how one of the things that I've been working on is an Upgrade framework. We've recently decided that we need to refactor/redesign the Import process we originally had in mind, and now we're playing with two different approaches. One approach is to implement BlogML in subText. The other is to use the Provider Model to leverage an existing blog engine's (i.e.- dotText, dasBlog, etc...) and subText's built-in object & data models to do data translation from the existing blog to a subText blog.
Anyhow, when I got ready to start building these Importers, the first thing I did was create a branch off of subText proper. The idea was that I would simply make my changes, test them, etc... and then at some point merge back into TRUNK. Good in theory, except that shortly after I branched, some of the other guys starting making a lot of changes to TRUNK, and my branch was quickly way out of date. Normally this isn't an issue b/c the merge will take care of. However, some of the changes on TRUNK were changes to the subText.Framework and I needed those changes to finish my work. So, now what?
Simple (right?), just merge from the TRUNK into my branch as described here. Wrong. I needed to keep working on my branch after the merge and then at some point bring my changes over to TRUNK, do more work on my branch, pull in any changes to TRUNK, merge my new changes back to TRUNK, and so-on and so-on... What I needed was a way to sync the branches. No biggie, just do a little Googling. NOPE! I found all kinds of examples of how to do multiple merges, but not the true sync that I needed. So, after much research/trial-and-error... I figured it out. And, I even made a nice little picture to illustrate the process! Check it out:

This process can be repeated as much or as little as needed. And you can update from the TRUNK as many times as you want to be sure you've always got the latest-and-greatest code, and then merge your changes back at any point.
I'm by no means a CVS Guru, and I'm sure there are probably better ways to do this, but I couldn't find them... so this is how I'm doing it! At least for now :) So, if you know of a better way, have questions about the process, advice, etc... post a comment below and let me know!
Hope This Helps!TM
Update/FYI:
For anyone out there that is new to CVS/Version Control (or those of use just looking for a refresher), I found a great read [via Haacked] entitled Source Control HOWTO. In his guide, Eric does a great job of laying out the basics of source control and then moving into the most common day-to-day tasks that a developer will tackle. Eric plans to continually expand this guide and delve even deeper into effective source control. Read On, and Good Luck!