AboutNOTE: I no longer develop CCP. I may fix some trivial bugs if reported, but I will not implement any new features.
CCP is a program that reads configuration files and upgrades them.
It takes a oldfile (typically the old configuration file currently in use) and a newfile (typically the default new configuration file) and optionally a template (a file which tells ccp how the generated configuration file should look like. It is generated on-the-fly if a template isn't supplied, so it is usually not needed). CCP first reads all the configuration options and values in the new file, then in the old file, then it either generates the template or reads the supplied template file, finally it merges the files into one - creating a new configuration file that has the changes that was made to the old file but also the new options that is included in the new file.
CCP is completely independent of the program that created the configuration file, and can be used for many different purposes. For instance it can be used to merge changes between an old user-edited configuration file and a .rpmnew file generated by rpm when a rpm was upgraded.
A good usage example is this:
You've got an rpm-based system, you upgrade a package, and then get a .rpmnew config file because you had made some changes to the original configuration file. The package should (in rpm %post) be able to upgrade the configuration file automatically for you, so that there are no .rpmnew files lying around