Oracle Data Integrator (ODI) 12.2.1.2.6 now supports Git as an external Version Control System (VCS). Now you can use either Apache Subversion or Git for source controlling ODI objects. Regardless of which technology is used, the user experience for an ODI user will be the same for any versioning operation and the underlying differences between the two systems are transparent to ODI users. This is consistent with the ODI core benefits of keeping users shielded from learning underlying systems and providing a seamless experience across technologies.
In addition, there are numerous new features added to increase productivity and address various use cases. Now you can have a consolidated view and manage all out-of-sync versioned objects from a single screen. The ODI Populate Repository option is also enhanced to allow populating a repository from a tag so that you can restore objects state from it. You can create version for all dependent object as well, along with versioning of the base object. There are options provided to regenerate scenarios during tag or deployment archive creation to ensure that the scenario corresponds to the current state of the corresponding object in VCS. The automatic merge process is made smarter to perform three way merge with change detection which reduces conflicts during branch merges.
In this article we are going to explore the version control related features and capabilities. I will cover the smart merge capabilities in a later article so stay tuned for that.
Configuring Git
The administrator needs to first enable Git as version control system and configure the repository connectivity.
Selecting Git as version control system will enable all the Git related configuration menu options. You can switch anytime between the version control systems so an ODI repository, previously configured with Subversion, can be switched to Git-based versioning. ODI however, does not migrate the version history during such switch so you need to migrate any such history directly though the tools provided by those systems.
Selecting Git for versioning enables the VCS settings options in the studio menu.
You need to perform all three settings configuration in the order of their appearance. The Edit Connection dialog configures Git connectivity details such as authentication type (protocol), URL, password etc. After connection setup, you can create and configure local Git repository through Clone Remote Repository operation. Then select the Git branch through the Configure menu option. Once successfully configured, you will notice that the Git indicator in the bottom right corner of ODI Studio turns green from grey indicating successful Git configuration. The indicator also displays the configured Git branch name – for example master branch in below screenshot.
Managing Versions
All the Lifecycle Management functionalities that existed in previous ODI releases for creating and managing versions in Subversion are now available for Git as well. Some of the operations are as follows
- Adding one or more objects to VCS
- Creating versions for modified objects that are out of sync from VCS
- Viewing version history – Hierarchical view and Tabular view
- Comparing difference between two object versions in VCS or comparing the VCS version with repository object
- Restoring an object version from VCS
- Restoring a deleted object from VCS
Since these functionalities are the same as noted earlier, I am not going to cover their details here. Instead, I will focus here on the new options provided in the latest release to make these more user friendly. If you are interested in details on above-mentioned operations, please refer to my previous post Oracle Data Integrator 12.2.1 - Managing Versions in Apache Subversion.
New options while creating versions
There are a couple of useful options available when adding a new object to VCS or creating new version of an already versioned object. These advanced options are available at the bottom of all the versioning dialogs. By default, they are not selected to give you the existing behavior from previous releases.
- Include Dependencies
- Regenerate and Version Scenarios