June 4, 2018

V-tronics

I have been thinking about v-tronics lately, that is the mechanisms of the versioning system used with The Most Serene Republic, and variously expounded upon here and there and most recently here.

One problem that has been seen is bifurcation of the patch tree, when two patches are created for a project which touch non-overlapping sets of files.  This can be seen most easily if you imagine a genesis with two files, A and B. If patch P1 makes a change to file A, and patch P2 makes a change to file B, then (the way v currently works) the user has to manually apply one of the patches if they want both to apply.

A proposed solution is to add a "manifest" file, which is touched by every patch applied to the project. This adds a nifty way to easily graft two projects together: you just need a patch which touches the manifest file for both projects (in project A manifest: "+added project B", and in project B manifest "+added this to project A") and keeps the v-patches small and readable. That way, even if no changes are made to the substance of the project that is pulled in, the addition will be applied to all later presses.

While I was composing this post, Trinque added a specification for the V manifest.

-