three retainer clients, three forks of the same repo - how do i merge them without breaking anyone
Same product underneath, forked eighteen months ago for the first client and again twice since. Every bug now gets fixed between one and three times depending on whether I remember.
I want one codebase and eventually a product. What is the actual sequence for doing that while three people are using the running versions daily?
@stipend_sam · 6mo ago · 2 replies
Do not attempt a big merge. Pick the fork you like least, diff it against whichever one you want as the base, and classify every single difference into three buckets: configuration, genuinely different behaviour, or accident. In my experience the split is roughly 70% accident, 25% configuration, 5% genuinely different, and the accidents are things like a hardcoded date format and a renamed column that existed for no reason anyone could remember.
Then: accidents get deleted, configuration becomes rows in a per-tenant settings table, real behaviour goes behind a flag. Move that one client onto the base with their flags on, watch it for two weeks, then do the next one. Took me about four months at a few hours a week and nobody noticed a single cutover.
Reply
Report
@goroutine_gil · 6mo ago
The classification pass is worth doing even if you never merge anything. I found two clients running a 'custom' rounding rule that turned out to be the same rule, written twice, differently, one of which had a bug that had been quietly producing wrong totals for a year.
Reply
Report