Welcome to All Things Data Integration: Announcements, Insights, Best Practices, Tips & Tricks, and Trend Related...

Git Versioning Support in Oracle Data Integrator (ODI)

Oracle Data Integrator (ODI) now supports Git as
an external Version Control System (VCS). Now you can use either Apache
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
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

  1. Adding one or more objects to VCS
  2. Creating versions for modified objects that are
    out of sync from VCS
  3. Viewing version history – Hierarchical view and
    Tabular view
  4. Comparing difference between two object versions
    in VCS or comparing the VCS version with repository object
  5. Restoring an object version from VCS
  6. 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
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

  1. Include Dependencies
  2. Regenerate and Version Scenarios

Include Dependencies

This option allows you to ensure that all the dependencies
of an object are also versioned along with the object. For example if you are
versioning a mapping which uses two data sources which in turn depends upon
some technology or logical schema, then using this option you can version all
these objects in a single operation along with the mapping itself.

If a dependent object is not yet versioned then it adds it
to Git or Subversion or if a dependent object is out-of-sync with VCS systems
then it creates a new version. If the dependent object is already versioned
then it will not do anything for that object.

This option is particularly useful in keeping consistency in
the versioned objects in VCS, which is key for continuous integration. It
removes any chances of missing to create a version for a dependent object so
that the current copies of all the relevant objects are present in VCS.

Regenerate and
Version Scenarios

This option takes care of regenerating the scenario before
creating a version for it in VCS. If you also select Include Dependencies then it regenerate a scenario for any of the
selected objects and their dependent objects.

This option will be useful when you want to ensure that the scenarios
present in your VCS correspond to the current copy of the corresponding object
in VCS. Such requirement could be crucial if you have an automated build and
testing process, which takes the scenarios from VCS and validates them.

Pending Changes

The newly introduced Pending Changes dialog allows you to manage
objects that are out-of-sync from a single place. You can access it from ODI
Studio Team menu option.

The Pending Changes dialog shows the list of all the
versioned objects from the ODI repository that are out-of-sync. If you are
looking for a particular object, you can directly reach to it through the
search field. This dialog allows you to perform following operations on the
selected objects.

  1. Create version for the selected object(s) here
    if the selected object is a deleted object from ODI Repository then you can
    push the deletion to VCS.
  2. Restore a deleted object from VCS. This option is
    applicable only when you select all the deleted objects.
  3. Compare the highlighted object with the VCS version.

New options while creation Tag

There are a couple of useful options provided during a Tag
creation allowing you to control this:

  1. Option to add only the versioned objects to the
    tag. This provides flexibility of creating Full Tag with only versioned object
    is a very useful flexibility that allows you to push all the versioned objects along
    with dependencies to VCS in a single operation.
  2. Regenerate and version scenarios so that the
    scenarios referred by a Tag always corresponds to the relevant object in the

New options while Populating Repository from VCS

The enhanced Populate
ODI repository
from VCS dialog provides a number of flexibility.

  1. Populate from branch or Tag: Now not only you can
    populate ODI repository contents from the currently configured branch but you
    can also restore the objects from a particular Tag created on the current
  2. It now gives you the flexibility to select
    either all the objects or a subset of objects to be populated from the selected
    Tag or branch. Such selective populating will be useful if you want to break
    down the process into smaller chunks or if you are interested only in a
    selected subset of objects from the branch or Tag. However, this flexibility
    comes with a pitfall that you may miss to import some of the dependent objects
    affecting the repository objects consistency. So this selective population
    process should be used with caution.
  3. Deleting existing work repository objects from
    ODI repository before populating objects from VCS. This will be useful in
    ensuring that there are no remnant of old work repository and after populate
    the ODI work repository objects are in sync with VCS contents.

SDK APIs for Continuous Integration

One of the needs for Continuous Integration is to automate the
Tag Creation and Deployment Archive build process. There are a couple of
services available in ODI SDK APIs that allows you to automate your entire
build and testing process. VersionManagementService
provides the necessary APIs to configure the VCS system, create Tags, and
populate an ODI repository from the VCS contents from a Tag. DeploymentService
provides APIs for creating Deployment Archive and applying it to target ODI


The enhancements added in Oracle Data Integrator (ODI) around Lifecycle Management capabilities provides broader support
for the leading Version Control Systems, improves developer’s productivity, and
addresses the needs for automating Continuous Integration and build process.
Yet again ODI differentiates itself by providing Lifecycle Management capabilities not
available in any other competing products.

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.