<p>so I am creating a system composed of different components that are installed via helm charts. Since I needed different customizations for each of the charts, I created my own separated repositories, copied the charts there and added customizations.</p>
<p>The question is: how do I conveniently upgrade the charts versions, while keeping the customizations?</p>
<p>For some of the components it was an easy task, since custom templates were moved to different folder and when upgrade is needed I simply replace old files with the new one.</p>
<p>The issue is that in some charts I needed to alter the original files directly, for example in the middle of a template adding necessary stuff. So, during the upgrade of such component I have to go through all files, compare them, remember what changes are mine and then update the whole repository. So yes, you guessed it - it's manual, inconvenient and error prune task.</p>
<p>I tried looking for good practices how to maintain such repositories, but I couldn't find any answers, so I'd be more than happy to take any advice.</p>

Withel
<p>If your changes are very specific to your project and not something that can be merged into the original repo, or you have legal loopholes to jump through, you can fork  the original code and periodically sync up with the upstream.</p>
<p>The process is outlined here:
<a href="https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork" rel="nofollow noreferrer">https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork</a></p>
<p>Obviously you still have to resolve conflicts, but you can set up a CI pipeline to periodically sync and update your helm registry.</p>
