Version control
Having a version control system is good; it’s better to use it with an error. There are several ways to branch and efficiently merge, two of which may work for you: "for each function" and "for each client."
In function
In this setting, you create a copy of the main code (trunk) for each new function that you implement. Once the function is complete, combine it back into the trunk. If you upgrade the trunk before the function completes or perform another function, you can merge these changes from the trunk into all branches.
For client
, , , , , . , :
Repos
+---Core
| +---branches
| +---tags
| \---trunk
+---Client1
| +---branches
| +---tags
| \---trunk
\---Client2
+---branches
+---tags
\---trunk
Project Managemet
, . , Trac , , . , Trac . , .