I've been looking for a way to use git/github for source code control for our Jitterbit (JB) projects.
Our current solution is for one dev to manually type out and explain the changes they've made in a README file within the JB project noting what scripts, transformations, operations, etc. have been changed and what line numbers the changes were made on.
Then to 'approve' the changes, another dev needs to open that project in the JB design studio, read through the README file, hunt down the object that was changed, find the line(s) noted in the README file and review the changes. Email or Slack back and forth to discuss any issues. Rinse and repeat for each object changed.
It's very cumbersome and time consuming.
While I can certainly create a repo in the JB projects folder, that's less than desirable because even with a one line change in a JB script, there are a lot of unrelated metadata changes (related to the JB environment, etc.) that show in the diff that have nothing to do with the actual code changes a dev makes. This gets even more complicated when you start switching environments in JB.
I've looked at using a .gitattributes file with a filter that uses sed to remove metadata lines from files (JB stores them as .xml files) that have actual dev code changes, but that's a very clunky and error prone solution, at best.
Has anyone figured out a way to use source control with JB, or, at least, some sort of diff tool solution where one dev can easily see, review, comment on, and approve/deny changes a dev makes (basically, everything that git provides...or at least the diff part)?
I've got a set up with Jitterbit and Git that works OK for me. It's a lot of manual steps, but I've got them to a point where I can get reasonably clean diffs reliably:
A. Setup
B. To start a branch:
In Design Studio, do a Restore Project from Cloud of the "clean" environment. This makes sure you have any changes deployed by other devs
In the "clean" environment, select "Migrate Project" and migrate the entire project to the "working" environment
This will cause a bunch of random metadata changes. Commit those now so they don't pollute your diffs later:
mainor equivalent branch checked outmainbranchNow actually create the Git branch (
git checkout -bin the Git repo)C. To make changes:
In Design Studio, make sure you're on the "working" environment. (This will be in sync with the deployed code due to steps B.1 & B.2)
Work on the project as normal, but each time you change something, migrate just the changed element to the "clean" environment (using the right-click menu in the sidebar list of project elements)
To commit your changes:
Delete everything from the Git repo and replace it with the "clean" environment again
Git changes will show only the files you migrated. Add and commit these as you usually do
D. To review and deploy
mainusinggit difflike you usually do. You'll still see some irrelevant metadata changes, but only in the migrated files†mainand check out themainbranch‡* This delete-Git-repo-and-copy-from-Jitterbit approach makes sure that the committed code always matches some version of Jitterbit code.
† I also have a
.gitattributesfile to further filter these. In my case I'm using an XSLT template, which I feel is a bit better adapted to filtering XML thansed.‡ I don't recommend letting this step have merge conflicts as the next step will obliterate them. I haven't found any way to do a Git merge without messing up the Jitterbit metadata and breaking things, so I avoid working in Jitterbit while anyone else has a branch open.