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.
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.
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?
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?