Version Control System for Ignition

Hi guys/Devs,

Are there any plans on incorporating a VCS like Git, github on Ignition?

OR if I may ask, is there anyone here who can suggest how to control source code like VCS does, or any alternative.

Thank you!

From what I know of Ignition’s internal storage of project resources, compatibility with traditional source code control systems will be a large and painful overhaul, if it ever happens at all. To be efficient, a git repository should contain text with a line-oriented structure. Ignition resources are arbitrary byte streams that may or may not have an XML representation. XML representation would be efficient for git if it is repeatable and if it is structured such that small changes in a project change a corresponding small section of the XML representation.
An option for XML export/import for an entire gateway that fits those criteria would provide a way to maintain an external repository. Ideally, such an export would be a zip of multiple XML files representing individually editable items like templates, windows, and transaction groups, organized into folders corresponding to projects and the gateway scope.
I can hope. :smiley:

1 Like

If you’re looking for a record of changes from version to version. Ignition keeps a record of that every time a project is saved or published. You can click on Projects from the Gateway web page. Then click View next to the project you are curious about.

If you are wanting to control the release of new versions then your best bet is to separate the save from the publishing of a project which you can do in the Project settings. This will allow you to develop and test any number of updates in the “Staging” project until you want the clients to have them. At which time, you would publish it.

But the real desire, if I understand you correctly, is to have a full copy of all code for all versions that can be gone back to at any point or referenced in future development. For that I would recommend a repository approach as follows:

  1. Separate save and deploy on your project.
  2. Once you have completed enough development to be considered a new version, publish it.
  3. Immediately back up the project and save it as the version number.
  4. Store this .proj file in the repository of your choice (or on a file server)
  5. If you need to reference an old version, restore the project back up to another gateway, or as a different name. If you need to roll back a version, just restore the proper version.

Not exactly github, but I think this will do the trick and it can be implemented right now!

Thank you pturmel and dpitzer for your suggestions.

Currently we are doing what dpitzer suggested. Its the closest thing to github right now huh?

Thanks again! :slight_smile: