Der "traditionelle" Ansatz sind die hier schon erwähnten Feature Branches. Aber das hat seine Nachteile. Insbesondere das Mergen kann sehr unangenehm werden. Mit Git/mercurial/etc. wird das auch nur ein bisschen besser. Substantiell ändert sich an der Problematik dadurch nichts.
Wenn man alleine arbeitet, ist das alles nicht so tragisch, aber schon mit zwei Entwicklern wirds irgendwann unlustig. Deshalb vertreten manche (insbesondere Leute aus der "agilen" Ecke) eine andere Auffassung: Contiuous Integration. Dabei committed jeder auf den master/trunk/whatever und zwar häufig (mindestens einmal am Tag, eher häufiger).
Damit der Code funktionstüchtig bleibt, obwohl man nicht fertig mit der Implementierung ist, benutzt man Feature Toggles. Also Schalter, die neues Features an- und ausschalten.
Ich hab den Ansatz bisher noch nicht ausprobiert, aber er klingt vernünftig. Dass das Mergen fehleranfällig ist und nicht gerade Spaß macht, hab ich nämlich schon erfahren. Bei Gelegenheit will ich das also mal versuchen.
Informationen darüber:
http://www.thoughtworks.com/perspect...nuous-delivery (interessantes Video)
http://martinfowler.com/articles/con...tegration.html (unfangreicher Atikel)
mfg
Christian