rethinking our git development model for VIA
In the VIA repository we have the source code for all the major VIA versions (1, 2, and 3) under their own separate directories. In addition, we use separate branches for the development of each major version (via-1.x.y
, via-2.x.y
, and via-3.x.y
). Each of the development branches has code for all the via major versions. I see the pros of each of those approaches individually but I see no reason to take both approaches.
Because we are still working on the different major VIA versions, having each on their own directory means we can work on all of them at the same time easily. And because each major version is effectively a new project without much code from the previous versions, there wasn't much development history lost by starting a new major version on a separate directory.
Having separate development branches makes sense when previous versions are still under development (which we still kinda do). One checkouts the branch for the version they want to work on. However, we already have the code for all the versions on all development branches so I see no advantage for having separate branches. Actually, I feel that having the code for all versions in all development branches makes things more confusing for us. When one checkouts via-2-x.y
, the code for VIA 3 is also there. But it can't be used as reference for anything because it's some old version from the past. Similarly, when I checkout via-3.x.y
, the code for VIA 2 is there but again, it can't be used as reference for the same reasons.
So, we have the code for all versions in all development branches, but the code for the other versions can't be used as reference (which makes it pointless) and always have to be careful to not commit development of one version in the wrong branch (which makes this setup error prone).
I propose we adopt only one of the approaches. Either we:
-
merge all development branches together and keep each major version on their own separate directory
-
remove the versions directories and keep the development branches
I'm leaning towards option 1.
Or maybe there's some advantage to our current setup that I'm missing.