I am struggling with a perceived conflict between tracking all my changes so I can figure out where I broke the code yesterday, and having a controlled (high overhead) code
All checkins require code review and I lack the authority to create private branches.
We are using ClearCase too and have development branch (not a branch per developer!, but a branch for a "development effort" involving one to a few developers) in order to checking early.
The rule though: it must compile and pass basic unit testing. If the CI - Continuous Integration tool - "gets red", everyone in the team of that development effort stops. And help to resolve the bug.
That way, we commit early and fix early.
Then a consolidation branch helps to report code that have pass stricter control (code review or some advanced testing).
It is all about having a merge workflow.
For very intermediate commits, I use Git right within my ClearCase View (a simple "git init
" inside a ClearCase view, and you have your very own Git workspace ready!).
Any number of private branches can live in this workspace, helping with private experimentations.
A "git bundle" helps me to backup the current state of that Git workspace into a file save outside my workstation.
how do you handle moving from one clear case view to another?
That is the drawback of a merge workflow: with ClearCase, you have to set up as many view as you have Streams (with UCM) or branch (non-UCM). We use dynamic views for the merges and their resolutions, and then snapshot views for development.
Since we have different views for different streams, we can easily compare two different development effort with a simple WinMerge.