VCS Overview
This page describes what is Version Control System, and it's realization in Builderius.
General information
Version Control System (VCS), also known as SCM (Source Code Management) or RCS (Revision Control System), is the practice of tracking and managing changes to software code. Version Control Systems helps developers manage changes to source code over time. Version control protects source code from both catastrophe and the casual degradation of human error and unintended consequences. Version control helps teams tracking every individual change by each contributor and helping prevent concurrent work from conflicting.
Builderius VCS was inspired by Git - one of the most popular VCS tools in use today. Builderius VCS is storing data in Database though.
Builderius can have different VCS repositories(owners of VCS):
- Templates
- Global Settings
Every VCS repository can have branches and every branch can have commits. Branching means you diverge from the main line of development and continue to do work without messing with that main line. Commit is a snapshot of your repo at a specific point in time.
When we create template - it means we create template VCS repository. Default branch master
will be created automatically for this template.
There will be created separate VCS repositories with default master
branch on plugin installation for storing data of global settings for all template types and for every specific template type:
- Global Settings(all template types)
- Global Settings(singular template types)
Builderius VCS workflow will involve the following steps:
- Make Changes
- Save Changes
- Commit Changes
Make Changes
When we open Visual Editor and start adding some modules or changing some settings - we are making changes. But we should understand which changes belong to which VCS repository:
- All stuff related to modules(modules tree, modules settings) and Template settings belong to current template VCS repository.
- Global settings for all templates of type same as type of current template belong to separate global settings VCS repository for specific template type.
- Global settings for all templates belong to separate global settings VCS repository for all template types.
All our changes are not existing in DB(and will be lost on page reload) until we save them.
Not saved changes will not be possible to preview because preview is working based on data saved in DB.
Save Changes
Save our changes we can in 2 ways:
- click on button. This button is responsible for saving changes in all VCS repositories. So all template changes and changes of global settings will be saved in corresponding VCS repositories.
- by opening version control system panel and saving changes just in necessary VCS repositories
Before saving data we should be aware of save logic.
- By saving changes into VCS repository we override our previously saved uncommitted changes.
- Saved uncommitted changes visible just for author of these changes.
- If more than one developer working on the project. Every developer can save his own uncommitted changes in any VCS repository and saved changes of different developers will not be overridden by each other.
Commit Changes
If we decided our saved uncommitted changes worth to have in history of changes - we should commit them.
Way #1: Way #2:
We can change active commit by doing checkout
Content Config Import/Export
Content Config of every commit can be exported.
Export will be a zip archive containing json file with content config and local images used in content config.
And of course it can be imported.
Imported content config will not be saved in DB, it will be just rendered in Visual Editor. If we want to save it - we should do it manually.
Commits Tagging
Even after committing our changes they will not be visible for everyone. Builderius publish system allows us to publish all templates and global settings at once. Builderius VCS repositories can have different commits, different q-ty of commits. But we can logically group them by tags. All commits in different VCS repositories which have same tag can be grouped in Release and be published together.