Has anyone tried to use TFS Source Control to backup their GIS desktop projects? I am using TFS but I think any Source Control solution may have the same issue.
We have implemented TFS for development projects at my organization. As part of the TFS team, I thought it worth having some level of version control with my projects and data. I have been avidly using ArcGIS Pro for the past while with FGDBs so thought it was a good place to start with backing up the Pro project folder. I wasn't looking to do anything fancy, just to check out and check back in. Unfortunately, there was a problem that looks to be more of an issue with how the FGDB works and TFS. When I went to check in in a project which had changed, the process stopped when it hit missing index files in the FGDB. It looks like the Index folder has files which update, ones that are deleted, and ones that are created. Thus we are no longer talking about a simple check in/check out. We would need to know what files are deleted and what files are added.
Does anyone have a suggestion on how to get around this? Does Esri have a solution other than upgrading to an SDE instance? I like the idea of packaging the files and data together so I can restore to a point. This would also put a restore process in place which would not require file system tape restores from our enterprise backup solution. Additionally, most of the human elements would also be removed.
The main option I see would be to use the package tool within Pro to package the project but that has its downsides also.
Any help would be greatly appreciated!!!
We use TFS as well for our dev projects. GIS is small component, and we don't have a lot of edits ongoing, so I just have the data directory on a regular back-up schedule... I do not keep anything in TFS. I did keep shapefiles in TFS at one time, however.
Not sure if this is useful for you, but if you are unaware, there's an API Esri has for FGDBs:
Here's what you can do with it:
File Geodatabase API
The File Geodatabase API provides a non-ArcObjects based means by which advanced developers can work with File Geodatabases. The File Geodatabase API is C++ based and can perform the following tasks:
- Create, Open and Delete file geodatabases
- Read the schema of the geodatabase
- All content within a geodatabase can be opened for read access
- Create schema for objects within the simple feature model
- Point, Line, and Polygon feature classes
- Feature datasets
- Read the contents of datasets in a geodatabase
- All dataset content within a geodatabase can be read
- Insert, Delete and Edit the contents of simple datasets:
- Point, Line, Polygon, Multipoint, and Multipatch feature classes
- Perform attribute and (limited) spatial queries on datasetsThis API is targeted for advanced developers who require access to the File Geodatabase without an ArcObjects license for purposes of interoperability. A commonly requested user scenario is to open File Geodatabase tables outside of an ArcObjects based application to view or modify data. This API does not replace ArcObjects as the recommended approach to interacting with the geodatabase.The File Geodatabase API leverages the work done in ArcGIS 10 to simplify the Geodatabase system tables. Therefore, the File Geodatabase API only supports file geodatabases from release 10 or later.
- Spatial queries will be limited to the envelope-intersects operator
Limitations of the File Geodatabase APIWhile the File Geodatabase API supports reading the schema and data of complex geodatabase types, the API does not honor geodatabase behavior on inserts, deletes or updates to the following dataset types:
- Annotation and Dimension feature classes
- Relationship Classes
- Networks (GN and ND)
- Parcel Fabrics
In most cases the API will prevent users from attempting to edit objects with complex behavior, but the onus is on the developer to understand what they should and should not edit through the API and avoid editing datasets that have geodatabase behavior. There is a method called Table::IsEditable which will provide developers with the ability to determine whether a dataset can be safely edited.Other limitations of the File Geodatabase API at its initial release:
- Rasters (Raster Dataset, Raster Catalog, Mosaic Datasets and Raster Attributes) are not supported.
- Spatial queries with the File Geodatabase API will be limited to the envelope-intersects operator.
I only mention this if it would help automate some sort of versioning for your geodatabase since it provides low-level access, programmatically.
Also, what about using geodatabase XML? ArcGIS Help 10.1
What about zipping the project folder and/or the geodatabase folder then checking in the zip file? This will eliminate the index file issue you ran into and remove the complexity around needing to add individual files from the geodatabase folder when you add feature classes tables, etc. to the geodatabase. It will keep all you need together, and you could even use the comments on the check in to mention what you have changed, or a milestone description etc.