Has anyone explored version control for methods assembled using HSL?

Has anyone implemented version control for workflows built using HSL code (rather than the Venus UI), specifically with GitHub or similar platforms?

If so, how has your experience been? Were you able to leverage key GitHub functionalities like git diff, git merge, and other essential commands effectively? I’m particularly interested in any challenges or advantages you’ve encountered with versioning, merging changes, and collaboration on HSL-based workflows.

Thanks in advance for sharing your insights!

2 Likes

Most files (.med, .stp for method file, deck layout files and labware files) are binary, you can not perform any git operations of collaboration on these files. HSL files are text, but these files are protected by checksum, after merge checksum will be wrong. And parameters of instrument steps are stored in .stp files, which means you can not get change informations with diff, and you may lost some parameters when merge.

It is very hard to develop methods, for you can not use modern IDE and git features. We maintained for about 100 method and library files, I have to say it is really a nightmare. This is also why someone like me to use python and C# to programme on STAR, the development experience will be better.

3 Likes

I work with git quite a lot and I adhere to the versioning by making a traced entry for the logfile. (major.minor.patch) and then - alpha, beta, rc-X

It’s important to have your commit messages clear.

As an extra, I have created a cfg file that I read during initializing the methods, this file contains the SHA of my codereviewed commit and version.

2 Likes

We got rid of decks for this very reason versioning them is a nightmare, just build the deck at runtime via HSL and no more having them in the repo.

We use Git but do not merge dev. Two people cannot work on the same method.

Does using hxcfgfilconverter work on the main method? Can you merge to converted main methods? Something I haven’t tried…

I remember this conversations about automating it: Automate HxCfgFilConverter From Command Line - #5 by Huajiang

By automating hxcfgfilconverter and not using decks you might be able to merge? If I remember correctly just by opening the method file then saving again you rewrite the checksum, could execute that when you pull via an additional bash script?

1 Like

nearly all the files (method, deck, labware, .stp) can be converted to text file, but these files are hard to understand and I do not think there will be any benefits for these file under version control.

Only all the code is really code, that we can use the full function of git and IDE.

How would you create your deck during runtime? I presume by using the devlib and AddLabware functionality. Did you program your complete deck to this manner? Wouldn’t this be just a way to complicate things even further?

For my workflow I have a deck, if I change anything I make sure the commit is correct, but the filename is still going to be Methodname_Deck.lay

The important thing for us is that we provide a SHA from the method commit to git in our reporting file.

If you are going through the trouble of using C or HSL, and are interested in Git-based version control, have you considered using PyLabRobot, the open-source Python library to write your automation scripts?

1 Like