As forks age, they tend to become more and more difficult to maintain. Upstream may repeatedly make changes which break the fork, and as the history of the fork gets longer it becomes unwieldy. Attempting to make PRs for upstream from the fork becomes more and more difficult as upstream diverges over time. Integrating large sets of upstream changes to the fork can create an overabundance of merge conflicts, creating a headache even for developers who know the code very well.
This talk will discuss a version control strategy using git that solves most of these headaches, which the speaker has used to manage a fork of the Unreal Engine for the last four years. Despite that long history, the studio has been able to integrate upstream changes with relative ease using a mostly-automated, bisectable process.
Finally, we’ll discuss the shortcomings of using git or other existing version control systems for this process, and discuss ways in which a new version control system could improve fork management.