I am developing an C++ application, which creates tree like structures (collections) of strings. I want to add the ability to save the information of these tree structures remotely/locally (can be text files) and together have version control function. In other words, I want to save and version control the tree structures that were created by my application. Version control feature should have the ability: to keep project versions, to merge projects, to create and merge branches, to detect and let user solve conflicts and to be manged mainly by application UI. I see two options:
I could code version control feature by my self.
Or I could somehow embed Git (or other version control system) into my application, which would handle most of the work behind the scenes.
I did not find any useful information in the internet on suggestions, strategies about how to implement version control systems in your own application.
I would be grateful for any insights which strategy to choose. Maybe there are more approaches? What are advantages/disadvantages? Which approach would require least efforts?