<div class=”float-left”><img src=”https://www.vectorsoft.de/media/2016/07/VersionFrontPic.png” alt=”versionControllImage” /></div>
The distributed version management of a project is a necessary optimization for the development process, especially when several developers are involved in the project. For us, this necessity has arisen, which is why we have set up a Git server in our company, with which our conzept 16 project is placed under distributed version management. As some customers have already asked about versioning conzept 16, I would like to present our solution to you.
<!–more–>
<h4>What is Git?</h4>
Git is a free distributed version management system for primarily text-based files. What makes it special compared to other similar programs such as SVN is that no central server is required to work on the project. The repository, which is available locally but can also be located on a server, is organised in branches. Changes to the project are saved as a snapshot by means of a commit. The last commit is tracked by version control. The current commit in the current branch is referenced by a pointer. Each new commit points to its predecessor. A commit consists of a commit object which, among other things, refers to a tree object in which the project files, i.e. BLOBs, are referenced. All objects are identified and controlled by a hash.
More about Git at <a href=”https://git-scm.com/book/de/v1/” target=”_blank” rel=”noopener”>Git: Book</a> and <a href=”https://de.wikipedia.org/wiki/Git” target=”_blank” rel=”noopener”>Wikipedia</a>.
<h4>Versioning in action</h4>
Of course, you can work with Git using the command line. However, there are some useful Git clients that simplify the whole thing somewhat – for Windows, for example, TortoiseGit.
In order to place a conzept 16 project under Git versioning, however, a few functionalities are required, completely independent of Git, as there is no direct interface between a conzept 16 application and the versioning tool. This means, for example, that it is not possible to work directly on the procedure version that is available in the repository, but only on the version that is available in the database.
We therefore first had to think about what exactly from the project should be placed under version control. In our case, this concerned the database procedures and the data structure. We also had to think about a workflow that would be suitable for working in conzept 16 using Git.
What is needed here is a way to export procedures from the database to the Git directory or, conversely, to import them. In order to do this conveniently and efficiently during project work, we have decided to create a plugin that works on the basis of the conzept 16 plugin interface. The Git plugin is an additional window that is opened next to the Designer and looks like this:
<div class=”align-center”><span class=”align-left”><a href=”https://www.vectorsoft.de/media/2016/07/Plugin.png” data-rel=”lightbox”><img src=”https://www.vectorsoft.de/media/2016/07/Plugin_small.png” alt=”” /></a>conzept 16 Git-Plugin</span></div>
The plugin can be used to export all procedures from the database and import them into the database. It is also possible to export the data structure file by file in XML format. In addition, the most important Git commands for us (commit, checkout, push, pull and fetch) can be executed. Of course, Git must be installed on the computer for this. However, the functions also require a workspace to be selected.
<em>Commit</em>:
Create a snapshot with the current changes to the branch
<em>Checkout</em>:
Switch to another branch or create a new branch. Can also be used to reset the branch to the last commit
<em>Push</em>:
Synchronise the branch with another branch, which may be located on a server, for example
<em>Pull</em>:
Update the local repository to the status of a repository that may be located on a server, for example
<em>Fetch</em>:
Update repository information
With regard to conzept 16, it was important to note that after a checkout or a pull, the procedure status must be imported from the local repository into the database. Before a commit, on the other hand, the procedures must be exported from the database.
The window consists of the buttons that can be seen on the left of the plugin image, as well as a label (under the “Select Workspace” button) to display the status and the current branch. The rest of the window is taken up by a textedit object in which status texts are displayed that are generated directly by Git.
The Git commands are executed by <code class=”c16″>SysExecute()</code>.
The plugin is developed according to the template manager from the CodeLibrary. If you are interested in the procedures of the plugin, you are welcome to leave a comment.