Err - you don't want to
branch every release, just major releases. Minor releases presumably do not
involve any major changes in functionality.
Here at my company we tag every potentially
public release (even though testing often means they never get publically
released), and we branch when we create a major new version. We currently have
three branches. The currently available version that has been in use for ages,
the new major version/upgrade that is still going through extensive testing and
debugging before full release (I believe betas have already been publically
released) and our mainline along which major development is still taking
place.
We also tag a branch when we make a
patch.
One reason for our tagging is because we
build multi-platform software. If we create a build or a patch or a support pack
for one system, and then later a customer wants it for antoher system we can
build exactly the same code by using the tag.
However that's just the way we do it -
check out Paras Jain's URL too.