Using mirthSync with Git for Version Control
March 1, 2019
In the previous post we have an overview of mirthSync and indicated that it can be used for many purposes beyond just simple pulling and pushing of Mirth Connect channels and configuration. In this post we will demonstrate how mirthSync can be integrated with Git and Git’s features can be used to track changes to view, review, and if necessary roll back changes to code and configuration.
At Saga-IT utilizing mirthSync is a vital part of our workflow. It enables us to track and visualize changes to our environments over time which gives us extra confidence to make even significant changes and enhancements without risk.
Git
Git is arguably the most widely used software for tracking changes and managing changes in files and directories. Other version control systems exist and can be used with mirthSync in a similar fashion. This post will show how to install Git (if not already present) on Windows and use Git and mirthSync commands to manage changes to a Mirth Connect instance. This can also be done within non-Windows environments by using your system’s Git tools available via the Git site or your package management system.
Installation
Downloads for Git can be found at https://git-scm.com/downloads. If you already have Git installed you should skip to the next section.
Download and run the most recent version of Git for windows
Click “Run” if prompted
Step through all of the default install options and make any changes if desired. I typically stick with the defaults. One setting that you may be interested in changing is the step that involves setting the default editor. Vim is used out of the box but is an editor that is unfamiliar to many people. If you wish - you can change this to various different editors that may be available on your system. Notepad++ is a good choice for Windows.
If you have any questions about the other settings during installation there are more elaborate tutorials that can be found elsewhere but for most purposes the default options should be fine. One option that I would recommend that you don’t change unless you know exactly what you’re doing is the PATH setting.
Wait for the installation to complete and then close the install dialog.
Your ‘Initial Commit’
Navigate using explorer to the directory that you used as the target for your previous mirthSync `pull`. If you don’t know what it means to `pull` or don’t have a mirthSync install and `pull` directory, please refer to and follow the directions in the previous post.
Right click within the `pull` directory and select ‘Git GUI Here’
Select ‘Create New Repository’ in the dialog that appears
Click ‘Browse’ and select the `pull` directory. In my case it is located at C:\Users\jesse\Downloads\mirthsync-2.0.2-SNAPSHOT\remotepull.
You should now see something similar to the following image. Your details may be slightly different depending on your Mirth Connect channels and configuration.
This is a view of all of your unstaged files. ‘unstaged’ is a Git term for files that Git is either not tracking or files that have changed and haven’t been ‘staged’ for committing. ‘Commit’ is language that is used to refer to a specific set of changes to files. In our case, the goal currently is to stage and then commit our initial batch of files. We’ll call this our ‘Initial Commit’. Whenever changes are committed to a git repository there should be language that indicates something about the changes. In our case it’s the first time we’re committing our files so ‘Initial Commit’ makes sense.
Go ahead and type ‘Initial Commit’ in the bottom right pane. Now, click the “Stage changed” button. Since there are no previous commits and we have new files git will ask if you would like to stage the ‘untracked’ files. Select Yes.
You’ll see that your files now are in the ‘Staged Changes’ area. This means that you’re ready to commit the new files to Git’s history of the current repository.
Go ahead and click ‘Commit’
You may get the following error if you’ve never used Git in this environment before
If so, click ‘Ok’ then click ‘Edit’ → ‘Options’ in the menu. Put your name and email address in the top-right corner of the the dialog that appears and click ‘Save’.
Now go ahead and click the ‘Commit’ button again.
Done! You’ve made your initial commit and the repository is clean (meaning it has no changes or new files since the last commit).
Viewing the repository history
At this point, if you’re curious you can view the history of your commits and see what was done. You can do this by selecting ‘Repository’ in the menu and clicking ‘Visualize all branch history’. This will open a dialog that allows you to view details and metadata about your commit. As you add commits to the repository this can be a handy tool for inspecting the changes. Go ahead and close this dialog when you’re finished but leave Git GUI running.
Working with changes
Now that we have our initial commit we’ll walk through the process of handling changes. To begin with, we’ll go ahead and create a new group and new channel. We’ll see how the new files are picked up and how to commit the new changes. Then we’ll make edits to the new channel code and configuration and see how to manage and view edits.
Go ahead and create a new Group and then add a new Channel to the group. The names and channel type don’t matter for our purposes. The goal is to see how it’s handled with mirthSync and Git. In my case, I created a new group called ‘New Testing Group’ and a new javascript writer Channel within that group called ‘New Testing Channel’.
Save your channel and group changes. Next, on your mirthSync machine, navigate to your repository location using powershell, a command prompt, or the ‘git shell’. Next run the mirthsync.bat command. For me, I was in the target repository directory already so the target is ‘.’ (the current directory). A full path could be used. Also, note that I used the full bath to the mirthsync.bat file. This is necessary if you’re not in the same directory as the mirthsync install or if mirthsync.bat isn’t in your PATH.
The following command tells mirthSync to `pull` from the Mirth Connect instance at 192.168.22.58. The -t parameter pulls everything into the current directory and the -f parameter tells mirthsync that it’s OK to overwrite any existing files.
c:\Users\jesse\Downloads\mirthsync-2.0.2-SNAPSHOT\mirthsync.bat -u admin -p admin -s https://192.168.122.58:8443/api -t . pull -f
Great! We have the latest code pulled down from our Mirth instance. Let’s take a look at Git and refresh its view of our repository.
Within Git GUI which you should have open from our previous steps - Click the ‘Rescan’ button
After the rescan you should see something similar to the following
As you can see - the new group and channel are showing up as unstaged. Using the same steps outlined above about staging and committing - go ahead and stage these changes, put a useful comment in the comment pane (I’ll use ‘Created new group and channel’).
Utilizing the branch history feature you can see the new commit and its details in addition to the previous commit. Notice that only changes are staged and committed. Git is efficient about only committing actual changes and doesn’t save or show code that is identical to the previous commit.
Close this window but leave Git GUI running for our next step
Go ahead and make a minor change to your new channel. It doesn’t matter what you change - the config or code, destinations, transformers, etc. I’ll change one property and alter my code a bit. Once you’ve made your changes do another mirthsync `pull`, rescan your repository in Git GUI and view the changes.
In my case you can see that I’ve updated the Channel description and have modified the Javascript reader javascript a little. The red and green highlighting indicate the changes from the previous version to the new version.
Go ahead and stage and commit your changes with an appropriate comment.
Finished! We’ve only scratched the surface of the mirthSync and Git combination in this post. Hopefully you can see the potential. We’ll be following up with more posts about mirthSync, Mirth Connect, HL7, and Healthcare IT in the future.
READING DONE