You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Blueriq version management helps you keep track of and provide control over changes to your models.

The concepts in version management are depicted in the following visualization:

Repository structure

Repository structure

Version management is the management of changes to projects. It ensures that multiple developers can make different changes without interfering with each others work, that there always is a releasable version of the project and that the project can be released, even if not all features have been implemented. This last option can be helpful if a deadline has to be met.

When you start developing a new application, the first thing you need is a repository. This repository can be viewed upon as a sort of file folder where all your future application development will be stored.

Development in the repository starts with a single branch. Branches are formed over time when you develop your application and register (or commit) the changes you made in the version management system. Every time you register your changes, version management creates a so called revision. Each revision contains the state that your application was in at the time that the revision was made. A sequence of revisions is called a branch. So after creating your repository, your first branch will contain just one special revision called the working revision. The working revision contains the current state of your development.

Branching strategies

A branching strategy is a plan on how to use branches. There is no right branching strategy. However, there will be a branching strategy that fits your Blueriq development and the technical environment best. It is advised to give it some good thought and choose a strategy together and stick to it. Evaluate the branching strategy and adjust if necessary.

One strategy mentioned in the documentation is feature branching and using a stable trunk as base. This trunk contains a releasable version of the project in which no changes are made. This way, it is ensured that there always is a releasable version of the project. When changes are going to be made, a complete copy of the trunk is made. This copy is called a branch. To ensure that developers don’t interfere with each others work, every major change is done in a separate branch. For example, branch 1 is for developing the 2 small new features X and Y, branch 2 is for bug fixing. Policies have to be put in place to make sure that changes are made in the branch intended for that specific change. This way, developers have their own working copy of the project in which they can make their changes.

Other branching strategies are for instance:

  • Releasebranching; a branch is created to develop in (remains a stable trunk) or a branch is created áfter development like a kind of releasepackage (results in a unstable trunk)
  • No branching at all; development is done directly in the trunk, tags can be used to indicate milestones or releases

Which (Blueriq) branching strategy fits you depends on your team, project, DTAP street and/or technical environment. There are some elements that might help choosing the right strategy for your project:

  • Do you need a stable trunk or branch?
  • Does the DTAP street support the branching strategy? 
  • Are there any other systems or applications dependent of the Blueriq project or the other way around? Is it useful to all use the same strategy?
  • Is it unclear when or if a certain feature will be implemented? It might be useful to use a feature branch.
  • How many people/teams have to work in the same models?

Tips & tricks for Blueriq branching:

  • Keep feature branches short-lived. This will prevent conflicts when merging back to the trunk.
  • Use tags (when registering your changes) to mark releases or milestones. This will make it easy to create a new branch, e.g. for creating a hotfix branch or to be able to view an old revision without the need to keep old branches.
  • Choose a branching strategy and stick to it across repository's and teams. Evaluate and adjust if necessary.
  • Keep the amount of active branches small to prevent conflicts and to remain overview. 
  • Don't keep a lot of old branches; rather tag your trunk consequently to be able to create a branch when necessary.

 

 

  • No labels