Using Source Control with LabVIEW

I know there have been many posts about this issue in the past, but the main reason I ask this is to check if there was any progress about it in recent years.

Our programming team has expanded and we are looking for ways to work on the same project from several computers,
as of today we are working with git but it seems hard to resolve conflicts when they happen.

Are there any teams using any kind of source control that is easy to use and works well with vi’s? If you use git are there any tips of avoiding conflicts or handling them better?

Thank you!

In terms of git, are you using it with that thing I think it uses LVMerge and such to work with git.

In addition, I’ve heard/read things about Subversion (?), but I’m not really sure, as I’ve never used it.

I have been looking into this since spring and I think I have found a fairly good set of solutions using Git. Here is our setup.

  1. Take your pick of between GitHub, Bitbucket, GitLab, or another Git repository hosting site. If you want to keep your code private on GitHub, they offer a free discount to FIRST teams. (I can’t find the thread on it at the moment. Maybe someone can find it.) Bitbucket is free for up to 5 developers last I checked. GitLab is free for any number of developers, any number of repos, and up to 10GB per repo. Of course there are other pros and cons to each but GitLab is what we are using at the moment.

  2. Assuming you don’t want to use the command line I recommend SourceTree as a Git client on Windows.

  3. LabVIEW comes with a diff tool and merge tool. They are not perfect as you might expect with graphical programming. And I wouldn’t recommend depending on them. But when you end up with two developers accidentally changing the same VI they might come in handy. Since SourceTree does not integrate with LabVIEW’s diff and merge tools perfectly, I made a LabVIEW program that works between the two. You can download the Update Installer here. There are a few things the installer does not do to set up so make sure to read the Wiki page. The source code is also available.

Hope this helps you get started. Let me know if you have any questions. :slight_smile:

Hi Jonathan,
Thank you very much for sharing your lv-merge-and-diff-wrapper. We are using SourceTree for about half a year for our LabVIEW projects, and as you know merging different versions of LabVIEW VIs is a real pain.

Your wrapper and instructions looks like something really useful and I would like to try it out. Since we are still using LabVIEW 2011 in our company, I was wondering whether your executable (run with 2016 LV Run-Time Engine) would work with the LabVIEW 2011 Compare and Merge tools.

Otherwise, I was wondering whether you would be able to add your executables in LabVIEW 2011 to your bitbucket downloads.

Thank you so much for your time and help.

Best regards,

Sure Peter, just use the Full Installer. The difference between the Update Installer and the Full Installer is that the full installer has the run-time for the LabVIEW version it was compiled with. The only advantage to the update installer is it’s much much less to download.

If that does not work or if you want to see the source code in LV 2011, let me know, I should be able to convert the VIs to LV 2011. I do not have LV 2011 so I can’t make the LV 2011 executables but you can if you have the code.

Just out of curiosity, what is the company you are with? Are you on an FRC team too?

Thanks for asking. Fun to see people are using it!

Thank you for your reply, Jonathan. And sorry for the delay. I am not monitoring this regularly. I am working for Vala Sciences, Inc., a small biomedical start-up in San Diego,

I am coaching a First Lego League team at my daughter’s elementary school, The Electric Bananas, FLL team 35077. It is our first year, i.e., chaotic, fun, and lots of work. :slight_smile:

I will try your tools out shortly and get back to you.

Hi Jonathan,
I briefly tried your earlier version of the Full Installer a few weeks ago (Tag V16.0.1.0). This opened the LabVIEW merge tool without any problem. The I uninstalled the LV Merge and Diff Wrapper because of some unrelated LabVIEW issues. I now installed your newest LV Merge and Diff Wrapper (Ver I might be doing something wrong, since now when I try launching the external merge tool from SourceTree, I get

error 7, Source:Invoke Node in NI_promergevis.lvlib:Merge Open>NI_promergevis.lvlib:LVMerge
Method Name: <b>User Interaction:Merge Load VI</b>

I doublechecked all the settings in SourceTree and LabVIEw and they match those listed on your wiki page. Please advise. Thank you.

Apologies for not replying to you sooner.

Error 7 is a “File not found” error. I believe the error message is coming from LabVIEW’s merge tool (i.e. not the wrapper). Please look in your working directory and see if the 4 temporary VIs are being created in their proper location (along side the VI from the current branch).

If that does not help you find the problem, please try making a small repository with a couple branches with a merge conflict that results in this same issue. Then send that repository to me and I will try to re-create the issue.