There are cms (version 0.1) which should be significantly finished with the possibility of further updates to new versions (0.2, 0.3, etc.).
That is, you need to change the code of cms to fit their needs, then to easily apply your modifications to the new version.
As I see it:
1. Put the source code for version 0.1 to version control system.
2. All code changes to try to write in separate files and connect them to code the cms more "unobtrusive" (hooks, modules, plugins).
3. All changes to the database to do in the form of set's transformation.
When upgrading to a new version, for example 0.2 to do a diff of the code between version 0.1 and its custom version based on 0.1 — get a list of changes that need to be applied to the new code version 0.2.
In the end, you will need to roll all the transformations in the database and apply all the changes to the code.
It can be problematic to hand-rolling of code changes, especially if in version 0.2 there is a significant change.
PS the Request not to kick for lamerskie question — I have not yet encountered with the use of other people's cms. Googling on the subject did not succeed.