Version Control in FME Server: Next Steps

Related products: FME Flow

Version Control is now in FME Server 2017.1

As of the FME 2017.1 release, we have added Version Control to FME Server as a technology preview. This means that while it’s not quite ready for prime time yet, it is available to take for a test run.

We’d like to call on anyone interested in this new feature and especially anyone who voted on any of the related ideas for this (definitely one of the more popular enhancement requests for FME with a total of 149 votes from 4 ideas!) to try this feature and let us know what you think.

Give us your feedback

We’re actively working on developing this new functionality and we want to hear from you!

What works? What doesn’t? Does it fit in with how you currently work with FME Server? Does it line up with how you would have pictured versioning in FME Server? The more context you provide, the better.

Please post your feedback as a comment back to this idea.

How do I work with this?

Simply turn on version control from the web interface. Once it’s configured, you can upload your workspaces to FME Server using the Publish to Server Wizard in Desktop. It will let you create new repositories to group your workspaces as you upload them. Once they are up there, you will be able to view and download past versions of your workspaces using FME Server’s web interface.

We’ve put together a video introduction for this new feature covering enabling versioning, viewing history, rolling back, connecting to remote git repositories, preserving history across FME Server upgrades and configuring security settings. Check it out here:

https://www.youtube.com/embed/4-XAm7_2O3c

For those who’d prefer the written word, check out the documentation:

https://docs.safe.com/fme/2017.1/html/FME_Server_Documentation/Content/WebUI/Version-Control.htm

I only have FME Desktop, can I try out Version Control too?

Yes, of course! You can download FME Server from our Trial Download Page and install it. If you’re only using FME Server for version control (and not for running workspaces), you can simply dismiss the Engine Licensing Dialog that appears when you open the web interface. Now, you can use FME Server as a central repository for your workspaces and take advantage of other benefits such as easier sharing and collaboration. You’re free to keep using FME Server like this for as long as you want for all your workspace management tasks.

A visual compare like:

https://knowledge.safe.com/idea/51439/visual-compare-two-workspaces.html


Awesome, keep up the good work!

 

So FME Server clones a GitHub repository (into its own repository I assume) when you press "Fetch from remote"? That's cool! :)

Next step would be the ability to set up triggers, so you can push stuff from your dev environment to Git and that FME automatically pulls the latest version.

Since you really need to know what you're doing if you're working with multiple people on the same workspace in different GitHub branches and you want to merge into the dev or master branch, I believe that a smart FME specific merge tool (inside FME Workbench) would be tremendously helpful here!


Great. I'll test it!


A merge tool for fmw files
would be a dream ;-)

But in the meantime here is my
feedback about Version Control in FME Server:I didn't manage to configure it for GITLab (maybe it's
me...)

    • In VC for Fme Server, all fme repositories are into one
      single GIT repository: Usually I have a project per FME repository (to
      manage security) and each project is version controlled in a dedicated GIT
      repository. I would like to have the possibility to configure One GITLab
      repository per FME repository
    • There are no comments on the commits: When committing to
      GIT (publishing to fme server) it would be usefull to make a comment to
      document the content of the commit. You can then see it in the history
    • No locking mechanism: (The checkout in svn). With git
      you can work with a team on git repository located on a share drive. Then
      the .recover file prevents concurrent edition on the fmw. Would it be
      possible to implement something similar on Version Control for FME Server?

      In general I believe it's a
      great first step and I have configured it on a DEV server at customer site
      already. I think this can be a great occasion to educate FME developers to
      better manage their source code and IT manager to build trust in FME development
      procedures.

      Personally, I use a remote
      GITLab and I configure FME to act as a build server to package my project into
      a zip file with <BuildNumber> tagged on each file (fmw, fmx, csv, sql,
      ini, xml, ...). My project code is then published as a single entity on fme
      server. Milestone builds are tagged in GIT so we can relate each build number
      to the issue tracker on GIT lab. Standard development process but without any
      file merging tool... Maybe one day...


      In case these aren't already planned, some options that might be useful – as suggested by FME Users:


      • choose which version to run when running a workspace.
      • change version within History tab, i.e. upgrade one version to current.
      • choose which version of a workspace to commit, rather than defaulting to the most recently published.
      • when a user with matching FME Server username and personal GitHub username make commits, they just appear as an unlinked user. Their commits are still tracked, but not linked to their GitHub.




      Choose what version of the workspaces to add to a project. It would be awesome if you could also version other files and export (using a project) all files of the same version.


      Sorry if this is already included (sadly haven't tried this feature yet) but something similar to Git Diff would be brilliant. When I remember to I always commit changes to the server and always take a fresh download from the server when I start working. However, there are lots of times when I forget. Being able to compare a local copy of a workbench to the server copy with every change would be really useful.


      @marko - This feature has not been added yet, but please show your support and vote for this Idea!

       

      https://knowledge.safe.com/idea/19784/identify-differences-between-two-versions-of-same.html

       


      Support for BitBucket in lieu of GitHub - my organization doesn't have a paid GitHub account, so I can't keep the repo private. On BitBucket, private repos are free for a small number of users.


      Suggested by an FME World Tour attendee:


      • make the commit notes non-optional

      Very cool. Would this work with GitLab?


      I was in a training course and an attendee suggested to add commit option when republishing to FME Server


      So need this, especially when we want everybody in our organisation to be using it!

       

       


      I love this feature!!! Is there a way to add existing workbenches in fmeserver to source control without having to republish them? We've upgraded to 2018 and I'd like to not have to republish everything just to get it into version control. Any advice would be greatly appreciated

       

      Looks like it's necessary to use the "commit" button when you publish to server in order to ge the changes to show up in the version history. https://s3.amazonaws.com/gitbook/Server-Admin-2018/ServerAdmin5Customization/5.09.WorkspaceVersioning.html

       

       

      #fmeserver

       


      Hi
      @justincornell, when Version Control is enabled in FME Server 2018 you are able to commit directly from the Repositories page. This allows you to 'Commit' without republishing, and is also very handy when testing a workspace – as you can republish multiple times, then 'Commit' only once you are happy with results from running in FME Server.

       

      '


      Thanks for the response @RylanAtSafe. You're correct. You can commit existing workspaces from the Repositories page, however, you have to commit one at a time. When you select multiple the commit is disabled. I'm looking for a batch option to commit everything that already exists on the server. Is there a setting that I can enable the commit action to work in batch for existing items? Included are some images to explain what I'm seeing.

       

       

      Works with a single selection

       

      '

       

       

      Doesn't support multiple selections

      '

       


      @justincornell you are absolutely correct with your observations! I think that would be a great idea – batch commit – but currently, it is not possible.

       

      There are a number of suggestions captured throughout the comments here, and our team will start to break them out into separate items for voting / priortization.

       

      Thank you for contributing here!

       


      Hi! We have started using versioning for FME Server 2018 now, moving away from Tortoise SVN. Being used to that platform we can see if a workspace has been commited to versioning or not. At the moment there aren't any easy way of telling if a workspace has been version controlled or not, we have to search in history or use the publisher in Workbench.


      My suggestion is a new column in the repositories with a simple checkmark or similar to indicate that the workspace has been commited. That would be nice and easy for users and administrators!


      https://knowledge.safe.com/questions/80169/can-i-see-which-workspaces-have-been-version-contr.html?childToView=80207#answer-80207 - I were suggested to add this here after asking this question.


      Best regards,

       

      Marcus

      This is a great idea. You can vote for it here: https://knowledge.safe.com/idea/85686/integrate-bitbucket-repository.html


      Hello! For me it is working perfectly fine on my Github repository. But is there already a way to push the files to Gitlab?


      Hi @tjak003, We currently only support working with GitHub. There is an Idea posted by another user for supporting GitLab as well: https://knowledge.safe.com/content/idea/84415/gitlab-integration-with-version-control.html Definitely give that your vote if you'd like to see that in a future FME release and add a comment if you have any additional feedback on how you'd like to see that work. Thanks!


      I was able to create a private repo under a free account now... They must have changed something...


      Currently the version control workflow is kinda clunky from a users perspective.

      If there was a way to auto-commit during publishing to FME server, that would be really useful. (See idea here)


      Doing a little bit of reverse engineering using the undocumented portion of the FME REST API, I created this FME Workbench that runs through and commits all items in all repositories for which the token user has access to. NOTE that I would imagine the API is subject to change on different versions of FME, so it might have to be tweaked a bit, but should work for the most part. I ran it successfully on version 18547. @rylanatsafe @justincornell


      Brilliant stuff! I'll have to try this out... I'll note that yes, we have not exposed the FME Server REST API endpoints related to Version Control on the assumption we may make breaking changes come time when we do another sprint on this feature.


      *However, hopefully we will be making your lives easier by implementing things such as batch change, and not just making it more difficult!