Checking in work
daily is a valuable development tactic for two reasons: to avoid losing work and
to reduce integration friction. The longer you wait to check in your work, the
more rework you will have to do if your local copy is lost or corrupted. And the
longer you wait the greater chance for merge conflicts that must be
resolved.
Code that will break
the build should not be checked into the main branch. You should create a
special branch for code that requires a longer timeline until it can be
integrated. Then you can check in your code daily to this branch without
breaking the build. Of course, this mitigates the risk of lost local work, but
it doesn’t address the issue of merge conflicts. Eventually, this special branch
must be merged back to the main branch, and conflicts will need to be resolved
at that time.
The comment about
monitoring what developers are doing every day indicates to me a low-trust,
micro-managed environment. This is not a version control issue, but a process
and management issue. The question isn’t why should we do daily check ins, but
why is there an atmosphere of distrust at our company? That’s a much bigger
question…