When web technologies first appeared, everything had to be manually coded. With time, technology has progressed and developers started realizing they could make the development a lot easier if they used web apps. It took some time but people realized that website development is best done on website development platforms. These platforms started popping up almost a decade ago and yet many developers continue to choose to code everything by hand. Why? The answer is versioning. In all these website development platforms, versioning is an afterthought at best. Some provide backups of the entire site as a workaround. Some of them offer integration to github. In all cases, the versioning solution (if there is one) leaves a lot to be desired.

Developers have a love/hate relationship with Git, which is the most popular versioning tool designed by Linus Torvalds. It is quite complicated but it handles every case developers need, even some obscure cases. WebDigital versioning architecture is based on Git but it is not using Git in any way. It is similar in that everything is based on objects and commits. WebDigital websites can host different versions of objects of different types such as elements, CSS, JS, fonts, files, etc. Each commit contains a parent in a branch along with the versions of the objects that changed in that commit.

Since this is a server-based repo and not a distributed repo like Git, the staging area is handled differently. Users can load and start changing a commit. They can load past commits from the version manager and start changing them. All such changes are saved in drafts, that are linked to the commits. When they commit that draft, changes are displayed in a dialog. Users can rollback certain changes at that time.

Note that if the commit is not the latest in the branch, conflicts may occur (if the same object was changed independently in a future commit). Such changes will also be displayed in the commit dialog and requires conflict resolution before they can be committed. Conflict resolution may be done by accepting own changes or overriding them with remote changes. It is possible to review the changes done in past commits, load them and cherry pick changes from other commits to the loaded draft. With integrated versioning and diff, it is quite safe to make changes to your website in WebDigital.