# Version Control

**URL:** <https://forum.inductiveautomation.com/t/version-control/1573>\
**Category:** Ignition\
**Created:** [February 24, 2010, 7:25pm UTC](https://forum.inductiveautomation.com/t/version-control/1573 "2010-02-24T19:25:02Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![Robert](https://avatars.discourse-cdn.com/v4/letter/r/e95f7d/32.png) [@Robert](https://forum.inductiveautomation.com/u/Robert)\
**Post date:** [February 24, 2010, 7:25pm UTC](https://forum.inductiveautomation.com/t/version-control/1573/1 "2010-02-24T19:25:02Z")

</div>

Integrated version control would be _real_ nice.

you know, right click on a window or script and get a commit option? Sorta like Tortoise?

---

<div class="post-metadata">

**Author:** ![Carl.Gould](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/carl.gould/32/7262_2.png) [@Carl.Gould](https://forum.inductiveautomation.com/u/Carl.Gould)\
**Post date:** [February 24, 2010, 8:09pm UTC](https://forum.inductiveautomation.com/t/version-control/1573/2 "2010-02-24T20:09:47Z")

</div>

Agreed, this isn’t the first time we’ve heard a request like this.

---

<div class="post-metadata">

**Author:** ![Robert](https://avatars.discourse-cdn.com/v4/letter/r/e95f7d/32.png) [@Robert](https://forum.inductiveautomation.com/u/Robert)\
**Post date:** [May 3, 2010, 4:09pm UTC](https://forum.inductiveautomation.com/t/version-control/1573/3 "2010-05-03T16:09:38Z")

</div>

Further to this, In would be nice to commit/branch/tag version x in a development system and then later checkout version x into the production system.

This would give us the ability to rollback to version x-1 after we discover that production is different from development/test.

(Production: The best test environment)

---

<div class="post-metadata">

**Author:** ![Carl.Gould](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/carl.gould/32/7262_2.png) [@Carl.Gould](https://forum.inductiveautomation.com/u/Carl.Gould)\
**Post date:** [May 4, 2010, 5:47pm UTC](https://forum.inductiveautomation.com/t/version-control/1573/4 "2010-05-04T17:47:13Z")

</div>

Yeah, that would be awesome. I can see tagging/rollback, but I think we’d just let you use basic project copying for branches.

---

<div class="post-metadata">

**Author:** ![ISDProj](https://avatars.discourse-cdn.com/v4/letter/i/58956e/32.png) [@ISDProj](https://forum.inductiveautomation.com/u/ISDProj)\
**Post date:** [May 4, 2010, 9:55pm UTC](https://forum.inductiveautomation.com/t/version-control/1573/5 "2010-05-04T21:55:50Z")

</div>

We already use CVS and Tortoise as our method of version control for all our source code. The only anomally when dealing with Ignition is that we just export a backup of the Project to a local directory, then commit that file to the repository.  
Restoring the backup simply involves going to the Ignition web console & overwrite the existing project.  
Of course it would be great if this were integrated, but for now this method works for us.

---

<div class="post-metadata">

**Author:** ![systemparadox](https://avatars.discourse-cdn.com/v4/letter/s/b5e925/32.png) [@systemparadox](https://forum.inductiveautomation.com/u/systemparadox)\
**Post date:** [August 8, 2012, 8:16am UTC](https://forum.inductiveautomation.com/t/version-control/1573/6 "2012-08-08T08:16:30Z")

</div>

Ignition can never have an integrated solution that would satisfy everyone’s requirements.

I would far rather that Ignition exposed the files somewhere so that I can use my own existing version control and backup systems (and hopefully also my own text editor, at least for editing script modules).

---

<div class="post-metadata">

**Author:** ![Robert](https://avatars.discourse-cdn.com/v4/letter/r/e95f7d/32.png) [@Robert](https://forum.inductiveautomation.com/u/Robert)\
**Post date:** [March 28, 2013, 7:10pm UTC](https://forum.inductiveautomation.com/t/version-control/1573/7 "2013-03-28T19:10:05Z")

</div>

Still just thinking about this? Any module developers want to take a stab at creating something?

---

<div class="post-metadata">

**Author:** ![Carl.Gould](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/carl.gould/32/7262_2.png) [@Carl.Gould](https://forum.inductiveautomation.com/u/Carl.Gould)\
**Post date:** [March 29, 2013, 8:38pm UTC](https://forum.inductiveautomation.com/t/version-control/1573/8 "2013-03-29T20:38:03Z")

</div>

This just came up yesterday actually. Things are getting more serious, but still no concrete details.

---

<div class="post-metadata">

**Author:** ![systemparadox](https://avatars.discourse-cdn.com/v4/letter/s/b5e925/32.png) [@systemparadox](https://forum.inductiveautomation.com/u/systemparadox)\
**Post date:** [April 2, 2013, 8:44am UTC](https://forum.inductiveautomation.com/t/version-control/1573/9 "2013-04-02T08:44:31Z")

</div>

> [@Robert](#):
>
> Still just thinking about this? Any module developers want to take a stab at creating something?

We're using a python script that exports scripts, expressions and SQL bindings to the filesystem where a normal version control system can be used. It's incredibly useful to be able to see what's changed, even if you can't easily import changes back into Ignition.

We have also added an import/merge mode to pull changes from the filesystem back into Ignition, but it's a very confusing process.

We have written a module which adds a new type of script module that uses the filesystem directly, but we aren't using it at the moment. The problem is that the scripts can only be edited via the filesystem, which proved too cumbersome when trying to bugfix a live installation.

There are two major problems that prevent this from being sanely done by module developers:

1. The module SDK does not expose individual resources, so the only way to get at the scripts is using hackery in Jython.
2. Ignition uses its own internal storage system instead of the filesystem, even on the gateway. This means that importing or exporting is fine (depending on whether you want Ignition or the filesystem to be the master copy), but you can't do both without a merge process, which is not straightforward to implement or use.

Also, none of this includes the layout of the windows or other properties. I did look at using an XML export, but the export is not 'stable' because it's just a serialised representation of the objects in memory.

---

<div class="post-metadata">

**Author:** ![Bob](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bob/32/16899_2.png) [@Bob](https://forum.inductiveautomation.com/u/Bob)\
**Post date:** [May 14, 2014, 2:00pm UTC](https://forum.inductiveautomation.com/t/version-control/1573/10 "2014-05-14T14:00:46Z")

</div>

What you are doing is interesting as I have thought of trying to at least export the scripts to be able to view version differences. Some way to get property changes on controls would also be helpful since so much in Ignition can be done via changing property values.

I have been the sole Ignition developer at my site which hasn’t made version control and the lack of being able to see file differences to much of a problem, but we are looking at adding more people to the project team which will make this more of an issue. I have also been promoting the use of Ignition as a development environment for other projects, but the lack of being able to do version control on separate project components with difference/change tracking is causing other teams to not consider user Ignition.

---

<div class="post-metadata">

**Author:** ![pat.stave](https://avatars.discourse-cdn.com/v4/letter/p/96bed5/32.png) [@pat.stave](https://forum.inductiveautomation.com/u/pat.stave)\
**Post date:** [May 15, 2014, 2:17pm UTC](https://forum.inductiveautomation.com/t/version-control/1573/11 "2014-05-15T14:17:02Z")

</div>

Kyle Chase at Kymera Systems have made an version control module, we are using a beta of this.

---

<div class="post-metadata">

**Author:** ![choy](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/choy/32/4190_2.png) [@choy](https://forum.inductiveautomation.com/u/choy)\
**Post date:** [April 4, 2018, 9:05am UTC](https://forum.inductiveautomation.com/t/version-control/1573/12 "2018-04-04T09:05:50Z")

</div>

do yo have a copy of the Module sir?
