I am tasked with creating a version control system (of sorts) for lay people. The data is stored as arbitrary json objects but the user interface is not that low level; it is a nice pretty GUI.
Each type of versioned data will have a master copy and when a user edits the master version a copy will be created for their own workspace; a quasi local branch.
Because of the nature of our users, any conflicts that arise will need to be handled as seamlessly as possible. It can't be complicated, a git conflict-like result can't be sent to the user and expect them to learn to resolve those conflicts. Conflicts will arise because after each person has finished their work they will submit it for review and if it is accepted it will be merged into a master-like branch.
My first thoughts are to have a "meta" list of changes associated to each object, however large the nesting goes, and whenever a change occurs add that change operation to that list associated with that object. When users make workspace changes a query will check to see if other user's changes will conflict and a notification will be sent to the user for them to contact the user authoring the other portion of the conflict.
Is this a practical approach? Are there any glaring shortcomings besides being a large project? Are there better options for writing a version control system for non tech-savvy people?
You might be able to assemble something reasonable around xudiff
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With