We take a different approach. Our software is run on clients' machines, so every "release" gets its own branch. Any updates and patches get branches as well. If Customer X calls us and wants to report a bug, we can glance at our branches and know exactly what the customer is running, and where we can start patching things.