Applying version control to ArcGIS ModelBuilder models?

Every mainstream version control software, be it central central version control like SVN or distributed solutions like Git, Mercurial, Bazaar etc. allow storage of binary files. They are all quite effective both performance-wise and also in terms of occupied space.

Inspecting differences between revisions/versions of a file is of course different story. There is not much you can do when you want to compare ArcGIS models, which indeed are binary. I do not know of any diff tools for models, I doubt there will be any as most people do not need this specific functionality.


Currently I have the workflow of ArcCatalog: opening toolbox > selecting model > editing > file > export > to python, switch to SCM tool > refresh changes > commit changes (enter log comment).

It's cumbersome so I don't do it so much, and thereby lose many of the benefits of versioning.


ModelBuilder is old, clunky, and is not getting any significant updates with ArcGIS Pro, if this tweet is any indication. I have never been a big fan of it (though begrudgingly still use it when I have to), so you might consider this answer as a sidestepping of the question and a recommendation to look at alternatives.

FME is arguably the most obvious ModelBuilder alternative, as it has a similar flow diagram UI. One relevant advantage is that its documents are in plain text format, so they can diffed (although there is often a lot of meaningless, auto-generated cruft that you have to learn to ignore). It is commercial software, however, so its cost may be out of reach for some.

Others which I'm less familiar with include Orfeo Toolbox, Whitebox Geospatial Analysis Tools, and QGIS's graphical modeler (based on SEXTANTE). These are all open source modeling environments with GUIs.

A big push that I have observed at GIS and open data conferences in recent years is towards the idea of "reproducible research", that is, data and processes that can be easily shared with and reproduced by others. That often means using open data formats, open source software, and shared repositories. Python and R are very popular for this.

I thought Dharhas Pothina's presentation on Python and GIS earlier this year made a good argument for this. I agree quite strongly that over-reliance on a GUI is detrimental to reproducibility. With code, so long as you are familiar with the language, you can scan through it pretty quickly and figure out what's going on, whereas with a GUI you have to click and scroll around through lots of different windows, often nested deep within one another, to get at values and settings.

Certainly, there is a tradeoff here, but in my opinion, anyone doing any serious work (scientific research, policy-making, etc.) should be using tools which facilitate reproducibility.

Sorry that this doesn't answer your question directly (though I don't believe there is an easy answer).