I was facing the problem of creating patches whose changes could persist in the case we were to upgrade the whole software to new version. Creating a patch using git is a process. First we create the patch, then we store it on a known directory, then after the overwrite is performed we get ready to observe what is going to be changed (–stat), to check possible conflicts (–check), and to finally apply the changes in those commits to the new version of the software.
A good model to empower clients is to have a point of sale for patches associated to those commits that they need for a particular piece of software. So the idea here is also to ensure them that when they are buying our patches they will be ensured that they will carry on through different upgrades and that they should not need to be worry about hitting the upgrading.
We can either provide support with those patches, or create infrastructure for the platform to apply certain patches through an interface. Of course that interface has to have git capabilities :). And this will be a topic of another post another day.