Version management or version control is a general term for keeping control of changes made to software, but also to documents and this page you are viewing right now on my.blueriq.com and so on.
In general implementing or using version management will bring several benefits. For example:
- Multiple developers will be able to make changes to the same application or even the same files without interfering with each others work.
- Previous versions can be restored and changed if necessary, e.g. to fix a bug in a previous version or to undo a change or feature.
- There can always be a releasable version of the application, even if not all features have been implemented or finished.
Version management can be controlled by stand-alone software like Subversion (SVN) or Git, which are two popular open source version control systems. Version management can also be embedded in the software, for instance within web applications to keep track of changes to documents or spreadsheets or blogging software.
Although there are differences between the numerous stand-alone solutions for version management and the built-in functionalities they do share many general concepts. Searching the web will teach you more about these general concepts and the available software solutions. For this current design guide a basic vocabulary will suffice (thanks to Wikipedia for an extensive common vocabulary on version control).
General term | Description |
---|---|
Branch | A version or a copy of a certain state of your application. In this copy changes can be made independently of the version it was branched from. |
Change | A change is a modification to a specific branch or file. |
Commit | Committing is the action of finalizing a (set of) change(s) by committing or merging the working revision to the repository. |
Conflict | When merging two branches (considering the trunk as a special branch) and one element has been modified in both branches a conflict occurs. Depending on the version control system you can solve a conflict by choosing one of the changes over the other or combining the two changes. |
Merging | Synchronizing one branch with another (considering the trunk as a special branch), e.g. when a feature is developed in a copy of the trunk and after it is finished the branch is synchronized with the trunk to update the trunk with the newly created feature. Another example is when the trunk is modified after the copy or branch is made and the changes in the trunk are required in the branch. In this case the branch is updated/synchronized with a newer version of the trunk. |
Repository | The repository can be viewed upon as a file folder where all the application data is stored. This includes the history of application. |
Revision | A specific state of your application in the entire history of the application. |
Tag | A milestone or important historical state or snapshot of the application, e.g. to mark a release. |
Trunk | The basis of your development and application of which branches can be made. (Finished) features or changes in separate branches sink back into the trunk. The trunk can also be referred to as mainline, baseline or masterbranch. |
Working revision/copy | The current state of your development in a (local) copy of the application. Hence all changes made to the application which are not yet committed to the repository. |
In Blueriq, Version Management is embedded in the software as opposed to a stand-alone version management system. As you will find later on in this design guide most general concepts above can be found within Blueriq Version Management. In the Documentation you can also find the basics of Version Management in Blueriq and the implementation of the mentioned concepts. In this design guide the focus will be on the ways you can implement version control with Blueriq using these concepts as there is not one right way and a strategy must be chosen that fits your application and organization best. In the next part different strategies are discussed.
Previous: Version management guide