# Version Control

**URL:** <https://forum.inductiveautomation.com/t/version-control/5332>\
**Category:** Module Development\
**Created:** [October 25, 2012, 8:35pm UTC](https://forum.inductiveautomation.com/t/version-control/5332 "2012-10-25T20:35:57Z")\
**Posts on this page:** 8\
**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:** [October 25, 2012, 8:35pm UTC](https://forum.inductiveautomation.com/t/version-control/5332/1 "2012-10-25T20:35:57Z")

</div>

So I introduced one of my developers to Ignition today. His first reaction to see the scripts was where/how is version control applied. After the ensure discusion about the history of VC in Ignition he wanted to write a plugin to support our VC system (SVN). I said go for it 😈  
He ask if he could add two icons to the bottom of script module editor, right beside the import and export ones.

Can we do this?

---

<div class="post-metadata">

**Author:** ![AlThePal](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/althepal/32/3603_2.png) [@AlThePal](https://forum.inductiveautomation.com/u/AlThePal)\
**Post date:** [October 26, 2012, 8:58am UTC](https://forum.inductiveautomation.com/t/version-control/5332/2 "2012-10-26T08:58:02Z")

</div>

Hi Robert,

When we wrote our own version control module for Ignition 😉 we ended up adding a new entry called ‘External scripts’ into the Project Browser between Configuration and Transaction Groups. From here you can add a new entry which points to a directory on your hard drive. This directory of course can be a repository - we happen to use Mercurial, but you can use any version control system.

Our module will try to find that local directory when using the Designer or a staging client. If the directory doesn’t exist or it’s running on a published client, it will use the code stored in the project - the external code is stored in the project when you save.

By keeping our Python code in a repository instead of the Script Module, we have all the benefits of change control within Ignition with a fairly clean workflow. We are only using this module internally at the moment, but we are thinking of releasing it for sale early in the new year. It would be good to know if anyone is interested.

---

<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:** [October 26, 2012, 10:14pm UTC](https://forum.inductiveautomation.com/t/version-control/5332/3 "2012-10-26T22:14:08Z")

</div>

That sounds pretty good. I like that the external code is saved internally automagicly.

Does it handle windows as well? Or do you still have to export those manually?

---

<div class="post-metadata">

**Author:** ![AlThePal](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/althepal/32/3603_2.png) [@AlThePal](https://forum.inductiveautomation.com/u/AlThePal)\
**Post date:** [October 29, 2012, 4:32pm UTC](https://forum.inductiveautomation.com/t/version-control/5332/4 "2012-10-29T16:32:58Z")

</div>

A slight correction - the external code is only stored in the project when you explicitly tell it to do so. This ensures developers can work on their own development versions before updating the live version when they are finished.

At the moment this doesn’t handle windows, only centralised scripts. We have another module that exports a number of elements from a window (e.g. scripts, expressions, tag bindings) and saves them to a directory structure on the local hard drive, allowing us to grep the results. This is only one-way and is really just a convenience for developers.

---

<div class="post-metadata">

**Author:** ![bvaldovinos](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bvaldovinos/32/6315_2.png) [@bvaldovinos](https://forum.inductiveautomation.com/u/bvaldovinos)\
**Post date:** [February 6, 2019, 11:43pm UTC](https://forum.inductiveautomation.com/t/version-control/5332/5 "2019-02-06T23:43:04Z")

</div>

Is that module available for others to use? I tried searching for it but no luck.

---

<div class="post-metadata">

**Author:** ![AlThePal](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/althepal/32/3603_2.png) [@AlThePal](https://forum.inductiveautomation.com/u/AlThePal)\
**Post date:** [February 7, 2019, 9:31am UTC](https://forum.inductiveautomation.com/t/version-control/5332/6 "2019-02-07T09:31:44Z")

</div>

No, we never released the module publicly, although we do still use it internally.

Apparently Ignition 8 is going to contain something very similar, allowing you to export resources (such as scripts) to an external repository. Hopefully you won’t have to wait too long for this to be released!

---

<div class="post-metadata">

**Author:** ![Sanderd17](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/sanderd17/32/8735_2.png) [@Sanderd17](https://forum.inductiveautomation.com/u/Sanderd17)\
**Post date:** [February 7, 2019, 9:56am UTC](https://forum.inductiveautomation.com/t/version-control/5332/7 "2019-02-07T09:56:57Z")

</div>

> [@AlThePal](#):
>
> allowing you to export resources

Just for calrity, it's not exporting or importing resources. The resources will actually be saved on the disk instead of inside an internal DB.

This is even better, as it saves the step of exporting and importing.

Though you could still use a module to allow committing the changes to your VCS. Otherwise that needs to be done manually.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [February 7, 2019, 12:54pm UTC](https://forum.inductiveautomation.com/t/version-control/5332/8 "2019-02-07T12:54:47Z")

</div>

> [@AlThePal](#):
>
> Apparently Ignition 8 is going to contain something very similar, allowing you to export resources (such as scripts) to an external repository

This is in the current beta now. Not quite as you describe: the filesystem is now the storage media for project resources, and changes at the OS level are recognized like edits in the designer. Described here:

> [@Nightly builds are back & project resource primer](http://forum.inductiveautomation.com/t/nightly-builds-are-back-project-resource-primer/22304):
>
> Hi everyone, We’ve turned the nightly betas back on, and soon we’ll be opening up the beta program to the public. First I just wanted to thank you all for participating in this private beta phase, we really appreciate all the feedback. Secondly, I wanted to take a minute to explain what we’ve been up to these past few weeks and the changes you can expect now that the builds are flowing again. We turned off the nightlies as we worked on merging in perhaps the most ambitious and important change…
