SCM Patterns: Building on Task-Level Commit


“Dad,” asked a young man, “my lady friends keep talking to me about being ‘involved with’ them versus being ‘committed to’ them. What exactly is the difference between involvement and commitment?”

“What did you have for breakfast, son?” his father replied.

“Bacon and eggs like always. Why do you ask?” said the son.

“Bacon and eggs, my boy, is a perfect illustration of the difference between involvement and commitment: the chicken was involved, but the pig was committed!”

The task-level commit (TLC) pattern is used to bring the concept of a change set to the check-in process. Essentially, TLC is used to group a set of related changes to separate objects into a single task level operation. This provides a much more intuitive delivery model for code changes, and reduces various kinds of configuration and dependency errors. If your tool does not provide support for change sets or something similar, you can still implement the TLC pattern using scripts.

Note that there are commercial products that provide this support, although the naming may be different. Aside from task, you may hear the terms change set or change package. There are differences in the various nuances of these terms, but for our purpose the differences are insignificant: either you have this capability built in, or you don’t.

This article assumes you can figure out how to perform basic TLC in your tool and discusses what you can build on top of that foundation: task based development.

Task-Based Development
The best use of TLC is in a fully task-based development cycle. In this model, all changes use the TLC approach, so there is always a task identifier for each change. An attempt to mix TLC with regular file-based development will degenerate into a chaotic muddle due to the inconsistent availability of data.

Tasks are natural elements for change tracking. It is important to distinguish between change set tasks and project management tasks. Generally, your project manager has tasks on her project plan with much less granularity than the coding tasks. CM and project management products are different, and so they use the same word differently. Explain this to developers and


About the author

AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.