A version control system has never been a feature built into Qlik Sense. The lack of at least some sort of Git integration has always been a concern of mine. Copying the applications, being the usual go-to solution, almost always ends up in a piled-up workspace and complete disorganization.
Looking back into my web-development experience, where the Git version control system was usually a prerequisite for any project, I decided to play around with the idea of making Qlik Sense work with Git. Thus, the much needed Gitoqlik project was born with the sole purpose of filling this gap.
Git is a version-control system for tracking changes in files and coordinating work on those files among multiple people.
GitHub, Gitlab, Bitbucket — git hosted service providers
Here’s an example of how Gitoqlik can be used to collaborate on Qlik Sense application development.
Gitoqlik is a Chrome browser extension that connects Qlik Sense to GitHub, GitLab, Bitbucket, and lets you save your applications in a Git repository. Install it from web store
![](https://miro.medium.com/max/816/1*406fwZyeMCyNYH76WF16VQ.png)
This team is developing a P&L report for quite a large project:
- John is taking care of the data models and the ETL-process development.
- Adam and Eve are handling the visualizations and sheets for the Qlik Sense application.
- The team has decided to use GitHub to track the client’s requirements and to version control the application source code.
As the ETL process has been taken care of, John creates an application and builds out the data model for Adam and Eve to use. We’ll call this application the master application.
John creates a GitHub repository using Gitoqlik and gives access to Adam and Eve.
Repository is a version-controlled storage space for your application and the JSON files that represents your application. This can simply be done by clicking the “Create a repository” button inside of Gitoqlik.
![](https://miro.medium.com/max/742/1*vXUsvRTPzUMalg5O5kFjpQ.png)
Gitoqlik will automatically create a master branch, which is the main branch for the repository. A branch is a specific starting state of the contents of a repository. The state can be further altered with new changes or reverted to an older version of itself.
As John is developing the application and the data models, he commits (saves and sends) his changes into the repository. This commit history is saved as a changeset by Git and can be restored to any previous state. John can revert changes if things in his application are not functioning properly.
A branch is a specific starting state of the contents of a repository. The state can be further altered with new changes or reverted to an older version of itself.
They now have two copies of the master application and they will each develop their sheets. Before beginning, Adam and Eve plan to divide the work between each other.
Adam will be developing Pivot table sheets and ABC-analysis sheets.
Eve going to create the “KPI” and the Custom report sheets.
![](https://miro.medium.com/max/1248/1*HUYAf6FXEgkAcOgIlj05Kw.png)
![](https://miro.medium.com/max/1060/1*kZzzWM-AYpYw8_svpJkh2A.png)
This is what the commit-graph would look like once Adam begins to work.
![Eve’s commit graph](https://miro.medium.com/max/1400/1*0EPvJnfHGCzwCzVNO4FQRQ.jpeg)
![Work in progress, Adam and Eve made commits in repository. Commit-graph](https://miro.medium.com/max/1400/1*Dk2f1jqBy-Wf2SJ3d81qxw.jpeg)
Once they’re both done, the team is ready to merge the branches in the master application repository. Both Adam and Eve create pull requests to merge their branches into the master branch. This is usually done through the console terminal or using standalone and IDE-bundled GUI tools. We’ll be using GitHub for this, though.
After accessing the repository page on GitHub we need to click the “Compare & pull request” button and follow the on-screen instructions.
![How to create a pull request in the GitHub](https://miro.medium.com/max/1400/1*ZrGcxH9w8-o_CsdbqZGTVQ.png)
![Create the pull request in the github](https://miro.medium.com/max/1400/1*titfWhkrthKUYRs1YAbK2Q.png)
Once Adam and Eve have created their pull requests John, being the repository owner and the one responsible for the master branch and merges into it, accepts Adam’s and Eve’s work. The commits become part of the master branch.
![](https://miro.medium.com/max/1400/1*ORNjamgj9z72t2zxRFQFRA.gif)
The resulting state of the master branch contains all the changes from Adam’s branch and all the changes from Eve’s branch.
![Final commit graph in the repository](https://miro.medium.com/max/1400/1*ugE5GsNkR059i1cncgbayQ.jpeg)
John can now checkout their work to update the state of his local repository.
![](https://miro.medium.com/max/1400/1*aSYhVWOxPCR6ai0auMI8dQ.gif)
So, Gitoqlik allows developers to work in isolated environments without the usual back and forth that collaboration without Git requires. The work can then be easily merged without trying to figure out which changes need to be copied where. Version control makes Qlik Sense development manageable and smart with the help of Git.
I hope it wasn’t a waste of your time. Stay tuned and share your ideas about the development process in Qlik Sense.
Let me know if you have any questions or/and want to use Gitoqlik in your team — my Linkedin.
P.S. Don’t forget to subscribe me on Youtube, because we have started a series of Tip&Tricks videos.
Useful links:
- How to manage the Qlik Sense project in Github?
- Gitoqlik manuals and documentation
- 7 reasons for good pull request descriptions
Original article: apolorotov.medium.com