Keeping track of changes to MXD files using version control?

Check out X-Ray, a nice set of tools for looking at structures (and differences) of MXDs and geodatabases. See links below. The tools were developed by the ESRI Local Government Data model group for working with the large municipal basemap datasets and mxds they work with but have been released for general use, and looks like is very useful add-in when working with large mxd's with lots of layers, complex labeling, lots of aliases, different scale dependent layer visibility, etc...

X-Ray for ArcMap (ArcGIS 10.2) (short overview video link included) http://www.arcgis.com/home/item.html?id=f0ae73e90c1a4992a1059e7d370966d4

X-Ray for ArcCatalog (ArcGIS 10.2) (short overview video link included) http://www.arcgis.com/home/item.html?id=9ea218ff575f4a5195e01a2cae03a0ae


While Subversion is most frequently used for version management/control of code, it is possible to use for documents and other types of files. There is an example of someone using it with Word documents.

Subversion is mature, and a lot of support is available for it on the 'net. I would recommend it if you're serious about tracking and reverting changes in MXDs, especially if you have multiple people working on the same MXD or set of MXDs.


I guess he means how the mxd file develops in time, preferably also keeping track of what you changed, and how you did it, with the options of going back to an earlier version. You could try and use a version control system like mercurial to keep track of the mxd file, but this can be troublesome.

Maybe switching to a scripting language like R or python (especially python seems to work well with ArcGIS as it is the standard scripting language nowads is not an option, but this supports all this things. You can version control the R script which does the processing, and visualization. You track the .R file in a repository, commiting changes as you go. Each commit is accompanied by a message of why you did this commit. You can also get older versions of the script out of the repository, enabling you to create the output of older version.