21 Integrating ODI with Version Control Systems

This chapter describes how to integrate Oracle Data Integrator (ODI) with external Version Control Systems (VCS). It provides information on how to set up VCS with ODI and step-by-step instructions to use the VCS features in ODI.

This chapter includes the following sections:

21.1 Introduction to ODI VCS integration

ODI integrates with external Version Control Systems (VCS) to enable version control of ODI objects. You can store versioned copies of the ODI objects into an external VCS repository. Since VCS relies on file-based storage, ODI objects are stored as XML files in the VCS repository.

Note:

  • Currently ODI supports only Apache™ Subversion® and Git (online and offline).

  • Files which are not ODI artifacts (configuration/build files or metadata files) should not be placed in the master/work repository in VCS.

To version control ODI objects using VCS, you need to establish a connection to the VCS repository and then configure the ODI repository with the VCS repository.

To enable Git offline mode, you must configure a shared branch with any ODI Repository.

In the Git offline mode, you can perform VCS operations in the local Git Repository and push to the remote Git Repository on need basis or when the remote Git Repository is reachable.

Git offline mode allows sharing branches across multiple ODI repositories. In the distributed ODI model, where each developer has their own ODI repository, they can work offline in their ODI repositories. Thus, multiple ODI developers can share/configure the same Git branch to their ODI Repository. ODI Studio allows you to configure to the same Git branch from different ODI Repositories.

Once the connection is established and configured, you can add non-versioned ODI objects to VCS, create versions of ODI objects, restore older versions of ODI objects from VCS, view versions of artifacts across branches and tags, and compare the differences between two versions of ODI objects within ODI.

You can add first class objects (FCO) present in designer objects, security objects, topology objects and container objects to VCS.

Some of the important advanced ODI VCS integration features are:

  • Create full or partial tags for the consistent set of ODI objects in VCS, which can be used later for branching and creating deployment archives.

  • Populate an ODI repository from a branch/trunk in the VCS.

  • Auto-versioning of versioned ODI objects as they are saved.

  • Encrypt (or decrypt) confidential information when exporting or importing ODI objects from or to the VCS repository.

  • Perform Pull/Push in the Git Offline mode, where one Git branch gets shared across multiple ODI repositories.

Note:

During the Create Branch/Create Full Tag/Create Partial tag/Push operations in the Git offline mode, ODI validates whether the local Git branch is up-to-date with the remote Git branch.

If the local Git branch is not up-to-date, a prompt to perform Pull operation appears.

If the local Git branch is up-to-date, then the process will proceed as normal.

For more information, see Performing Pull/Push.

21.2 Understanding Generic Profiles in ODI

ODI provides out-of-the-box generic profiles. These profiles contain a set of privileges to work with version management and version administration operations.

ODI includes the following generic profiles:

  • Designer

    This profile contains a set of privileges to work on all the design objects provided by ODI. It also includes the set of privileges needed for performing version management operations such as add a non version controlled ODI Object to the VCS, create a new version of a version controlled ODI Object, restore a version controlled ODI Object from one of its previous versions, etc.

  • Security Admin

    This profile contains a set of privileges to work on all the security objects provided by ODI. It also includes the set of privileges needed for performing version management operations such as add a non version controlled ODI Object to the VCS, create a new version of a version controlled ODI Object, restore a version controlled ODI Object from one of its previous versions, etc.

  • Topology Admin

    This profile contains a set of privileges to work on all the topology objects provided by ODI. It also includes the set of privileges needed for performing version management operations such as add a non version controlled ODI Object to the VCS, create a new version of a version controlled ODI Object, restore a version controlled ODI Object from one of its previous versions, etc.

  • VCS Version Admin

    This profile contains a set of privileges to work with version administration operations such as select the version control system to be integrated with ODI, configure ODI Repository with the Version Control System, populate an ODI Repository from a VCS branch/trunk or tag, create a full/partial tag, merge development branch with trunk, etc. along with a set of privileges given to the DESIGNER, SECURITY ADMIN, and TOPOLOGY ADMIN profiles.

21.3 Setting up a Version Control System

21.3.1 Switching Between Different Versioning Applications

Perform the following steps to switch between different versioning applications in ODI.

To switch between different versioning applications in ODI:

  1. Click Team >Switch Versioning Application.
  2. On the Select Version Control Management System dialog, select VCS and then click OK.

    The Reconnect confirmation dialog appears.

    Note:

    Currently ODI supports only Apache™ Subversion® and Git.

  3. On the Reconnect confirmation dialog, click Reconnect to disconnect and reconnect to the ODI repository.

    ODI will now use the selected VCS as the team versioning application.

    Note:

    It is not recommended to switch versioning applications frequently.

21.3.2 Creating or Editing a VCS Connection

The ODI user should be able to create or edit a connection to the remote VCS repository using various authentication options.

To create or edit a VCS connection from the ODI Studio:

  1. Click Team> Settings> Edit Connection.

    The VCS Connection dialog is displayed.

  2. From the Authentication Type drop-down menu, select one of the following authentication types:
    • HTTP Basic Authentication

    • SVN/Git Basic Authentication

    • SSH Authentication

    • SSL Authentication

    • File Based Authentication

    Based on the selected authentication type, different options are displayed in the VCS Connection dialog.

  3. Set the required options and click OK.

    ODI will attempt to create a connection to the remote VCS repository, and will close the VCS Connection dialog box if successful.

    For more information, see the following sections:

    "HTTP Basic Authentication Options"

    "SVN/Git Basic Authentication Options"

    "SSH Authentication Options"

    "SSL Authentication Options"

    "File Based Authentication Options"

21.3.2.1 Leveraging Password-protected Wallet for storing VCS Passwords

Note:

This is applicable only if storing passwords in wallet is configured. If it is not configured, the VCS password has to be entered every time the user logs in to the studio.

When a successful VCS repository connection is created, ODI stores the VCS connection passwords in the existing password-protected wallet.

To connect to an ODI repository, the ODI user only needs to enter the wallet's password. ODI will retrieve the VCS password from the wallet and store it in its memory till the user's session is active.

Password-protected wallets use a strong encryption algorithm to secure the wallet's contents. Oracle strongly recommends the use of password-protected wallets for storing Git passwords.

Note:

For File based authentication, passwords are not used and hence wallet is not applicable.

21.3.2.2 HTTP Basic Authentication Options

The following table describes the options specific to HTTP Basic Authentication.

Table 21-1 HTTP Basic Authentication Options

Option Description

SVN/Git URL

VCS repository URL.

The URL format is:

  • SVN — http://<host>:<port>/svn/<svn-repo-name>

  • Git — http://<host>[:<port>]/<git-repository>

User

User name for authentication.

Password

Password to connect to the VCS repository.

Use Proxy Server

Select to use an HTTP or HTTPS proxy server.

Note:

If the Use Proxy Server check box is selected, the Host and Port properties are enabled.

Host

Proxy server to connect to the VCS repository.

Port

Proxy server port.

Proxy Server Requires Authentication

Select to authenticate the proxy server.

Note:

If the Proxy Server Requires Authentication check box is selected, the User and Password properties are enabled.

User

User name to connect to the proxy server.

Password

Password to connect to the proxy server.

21.3.2.3 SVN/Git Basic Authentication Options

The following table describes the options specific to SVN/Git Basic Authentication.

Table 21-2 SVN/Git Basic Authentication

Option Description

SVN/Git URL

VCS repository URL.

Note:

The URL must not contain a sub-directory.

The URL format is:

  • SVN — svn://<host>/<svn-repo-name>

  • Git — git://<host>[:<port>]/<git-repository>

User (Only in SVN)

User name for authentication.

Password (Only in SVN)

Password to connect to the VCS repository.

21.3.2.4 SSH Authentication Options

The following table describes the options specific to SSH Authentication.

Table 21-3 SSH Authentication Options

Options Descriptions

SVN/Git URL

VCS repository URL.

The URL format is:

  • SVN — svn+ ssh://<host>/<disk-path-of-svn-repo>/<svn-repo-name>

    Note:

    By default, SSH authentication is disabled for SVN.

    To enable SSH authentication for SVN, perform the following steps:
    1. Download the trilead jar from the following location and copy it to odi/sdk/lib:

      https://mvnrepository.com/artifact/com.trilead/trilead-ssh2/1.0.0-build221

    2. Add the following line to the odi.conf file.

      AddVMOption -Doracle.odi.svn.ssh.enabled=true

    3. Restart ODI studio.

  • Git — ssh://<username>@<host>[:<port>]/<disk-path-of-git-repo>

Port (Only in SVN)

SSH port number.

User (Only in SVN)

User name for authentication.

Password

Password to connect to the VCS repository.

Private Key File

Select to establish an SSH connection using SSH keys.

Note:

If the Private Key File check box is selected, the Key File and Passphrase properties are enabled.

Key File

Path of the Private Key File.

Passphrase

Passphrase for the selected Private Key File.

Note:

Generating a passphrase is optional.
21.3.2.5 SSL Authentication Options

The following table describes the options specific to SSL Authentication.

Table 21-4 SSL Authentication Options

Options Description

SVN/Git URL

VCS repository URL.

The URL format is:

  • SVN — https://<host>:<port>/svn/<svn-repo-name>

  • Git — https://<host>[:<port>]/<git-repository>

User

User name for authentication.

Password

Password to connect to the VCS repository.

Enable Client Authentication

Select to enable client authentication.

Note:

If the Enable Client Authentication check box is selected, the Certificate File and Passphrase properties are enabled.

Certificate File

Path of the Certificate File.

Passphrase

Passphrase for the selected Certificate File.

Use Proxy Server

Select to use an SSL proxy server.

Note:

If the Use Proxy Server check box is selected, the Host and Port properties are enabled.

Host

Proxy server to connect to the VCS repository.

Port

Proxy server port.

Proxy Server Requires Authentication

Select to authenticate the proxy server.

Note:

If the Proxy Server Requires Authentication check box is selected, the User and Password properties are enabled.

User

User name to connect to the proxy server.

Password

Password to connect to the proxy server.

21.3.2.6 File Based Authentication Options

The following table describes the options specific to File Based Authentication.

Table 21-5 File Based Authentication

Options Description

SVN/Git URL

VCS repository URL.

The URL format is:

  • SVN — file://<disk-path-of-svn-repo>/<svn-repo-name>

  • Git — file://<disk-path-of-git-repo>

21.3.3 Cloning Remote Git Repository in Local Directory

Note:

This is applicable only if Git is selected as VCS.

After a connection has been created to the remote Git repository, it has to be cloned in the local repository. Cloning the remote Git repository is a pre-requisite for configuring Git with ODI.

To clone the remote Git repository in local directory:

  1. Click Team> Settings> Clone Remote Repository.
  2. Specify the Clone Git Remote Repository settings.

    For more information, see "Clone Git Remote Repository Settings".

  3. Click OK.
21.3.3.1 Clone Git Remote Repository Settings

The following table describes the options that you need to set in the Clone Git Remote Repository dialog.

Table 21-6 Clone Git Remote Repository Options

Option Description

Remote Repository URL

The remote server location where the Git repository has been set up.

Clone Directory

The local directory location where the remote Git repository is cloned.

Note:

The local directory should be empty.

21.3.4 Configuring Subversion Settings

Note:

This is applicable only if Subversion is selected as VCS.

You need to configure the Subversion specific settings in ODI. These settings include the working folder path and the merge working folder.

To configure the Subversion settings:

  1. Click Tools> Preferences> ODI> User Interface> Versioning> Subversion.
  2. Specify the Subversion Settings.

    For more information, see "Subversion Settings".

  3. Click OK.
21.3.4.1 Subversion Settings

The following table describes the options that you need to set in the Subversion Settings dialog.

Table 21-7 Subversion Settings Options

Options Description

Working Folder Path

The working folder contains artifacts exported from the Subversion repository to execute various version management operations like export, commit, restore, and so on. ODI replicates the same folder structure present in the Subversion repository while storing these artifacts in the working folder.

Merge Working Folder

This folder contains the ODI artifacts exported from the Subversion repository during the Merge operation.

Note:

ODI deletes the artifacts present in the merge working folder once the merge operation is complete.

21.3.5 Configuring ODI Repository with VCS

Note:

  • The option to configure the current ODI Repository with VCS will be enabled only for ODI VCS Administrators.

  • For Subversion, you need to configure the Subversion specific settings in ODI before configuring the ODI repository with Subversion. For more information, see "Configuring Subversion Settings".

  • For Git, the Configure option is enabled only after the remote Git repository has been cloned successfully.

  • Currently, the LCM feature supports only one master-work repository combination with one VCS branch.

To configure ODI repository with VCS:

  1. Click Team> Settings> Configure.
  2. Set the configuration options.

    For information on Subversion configuration options, see "Options to Configure ODI Repository with Subversion".

    For information on Git configuration options, see "Options to Configure ODI Repository with Git".

  3. Click OK.

    The Reconnect confirmation dialog appears.

  4. On the Reconnect confirmation dialog, click Reconnect to disconnect and reconnect to the ODI repository.

For information on encryption support provided by ODI, see "Providing Encryption Support".

21.3.5.1 Options to Configure ODI Repository with Subversion

The following table describes the options that are required to configure the ODI Repository with Subversion.

Table 21-8 Options to configure ODI repository with Subversion

Options Description

SVN Repository Name

Name of the existing Subversion repository.

SVN Project Name

List of the Subversion projects available in the Subversion repository.

Create Default Project Structure

Click to create a default project structure in the Subversion repository.

For more information, see "Creating a Default Subversion Project Structure".

Select Trunk or Branch

Select a trunk or an available branch.

New Branch

Click to create a new branch from a tag.

Root Directory Enter root path for VCS, under which all ODI artifacts will be persisted.

If configuring to a trunk/branch that already has a root directory, the root path will be pre-populated.

Note:

Applicable for both Git and SVN.

Auto Version

Select to enable auto versioning at the ODI repository level.

Note:

If Auto Version is enabled, a new version is created for an already versioned object whenever changes are made to the object and the changes are saved.

Security Key

Select to create a Security Key for encrypting data. The Security Key must be of a minimum length of 8 characters and a maximum length of 100 characters, must contain one or more alphabetical characters, and at least one numeric digit or a special character.

Enter Security Key

Click to enter the Security Key.

21.3.5.2 Options to Configure ODI Repository with Git

The following table describes the options that are required to configure the ODI Repository with Git.

Table 21-9 Options to configure ODI repository with Git

Options Description

Remote Repository URL

Name of the remote Git repository.

Select Branch

Select an available branch.

New Branch

Click to create a new branch from a tag.

Root Directory

Enter root path for VCS, under which all ODI artifacts will be persisted.

For example, if the root path is specified as /main/test, then all the ODI artifacts will be persisted under /main/test.

If configuring to a trunk/branch that already has a root directory, the root path will be pre-populated.

Note:

Applicable for both Git and SVN.

Auto Version

Select to enable auto versioning at the ODI repository level.

Note:

If Auto Version is enabled, a new version is created for an already versioned object whenever changes are made to the object and the changes are saved.

Security Key

Select to create a Security Key for encrypting data. The Security Key must be of a minimum length of 8 characters and a maximum length of 100 characters, must contain one or more alphabetical characters, and at least one numeric digit or a special character.

Enter Security Key

Click to enter the Security Key.

Shared Branch

Select to enable:

  • Offline mode

  • Pull/Push commands in the Team menu.

    Note: If Shared Branch is selected, you must perform Pull/Push operations explicitly. ODI will not perform these operations implicitly as part of the VCS operations.

  • Multiple ODI developers to work in the same shared Git branch.

    Note: Multiple developers sharing the same Git branch means that 1-1 mapping of the ODI repository and the Git branch is relaxed with this setting.

21.3.5.3 Providing Encryption Support

ODI introduces the VCS/Security key to cipher sensitive information, such as security credentials, while exporting ODI objects into XML files. The VCS/Security key is shared across multiple branches/trunks or tags present in the VCS repository. The VCS administrator is expected to remember this VCS key. The VCS/Security key must be of a minimum length of 8 characters and a maximum length of 100 characters, must contain one or more alphabetical characters and at least one numeric digit or a special character.

The VCS/Security key specified by the VCS administrator will be used to:

  • encrypt sensitive data of ODI artifacts during the Add to VCS/Create Version/Create Full/Partial Tag operations.

  • decrypt data of ODI artifacts during the Populate ODI Repository/Restoring artifacts from VCS operations.

21.3.6 Reconfiguring ODI Repository with VCS Repository

ODI allows reconfiguring of the ODI repository to another VCS branch without having to recreate the ODI repository.

For information on the steps to reconfigure the ODI repository with VCS repository, see "Configuring ODI Repository with VCS".

21.3.7 Creating a Default Subversion Project Structure

Note:

This is applicable only if Subversion is selected as VCS.

You need to create a default project structure in the Subversion repository. The structure appears as seen below:

<SVN_PROJECT_NAME>

   branches (contains all branches)
   tags (contains all tags)
   trunk (main line of development)

This structure helps to identify the trunk, branch, and tag folders present in the Subversion project created in the Subversion repository.

Note:

For every model that you create in ODI, a default sub-model is created. You cannot view this sub-model as it is not visible in the tree node of the designer tab, but you can view it in the Import Summary Report and Add ODI objects to VCS(Git/SVN) window.

To create a default Subversion project structure:

  1. Click Team> Subversion> Configure.
  2. Click Create Default Project Structure.
  3. Enter a name for the Subversion Project in the SVN Project Name field.
  4. Enter a description in the Comments field.
  5. Click OK.

21.4 Erasing/Detaching Existing Work Repository from Master Repository

In ODI, you can erase or detach the existing work repository from the master repository to which it is attached.

To erase or detach the existing work repository from the master repository:

  1. Go to the Topologies tab and expand the Repositories section.

  2. Right-click any work repository listed under Work Repositories and select Erase from Database or Detach.

If you erase the existing work repository, the work repository tables and the artifacts present in the VCS branch/trunk to which the ODI repository is configured will be deleted.

If you detach the existing work repository, the artifacts present in the VCS branch/trunk to which this ODI repository is configured will be cleaned.

The ODI-VCS integration supports a combination of only one master and work repository to work with a VCS branch/trunk.

Note:

In Git offline mode, Erase/Detach work repository will not delete any artifacts in the Git branch.

21.5 Populating an ODI Repository from a VCS Branch/Trunk or Tag

You can populate an ODI Repository with the ODI objects from the currently configured branch/trunk or from a tag created on the currently configured branch.

To populate an ODI repository from a VCS branch/trunk or tag:

  1. Click Team> VCS Actions> Populate ODI Repository from VCS.

    The Populate ODI Repository dialog appears.

  2. Select Configured Branch/Configured Trunk or VCS Repository Tag to populate the ODI repository.

    If VCS Repository Tag is selected, select a tag from a list of tags created from the currently configured branch.

  3. To populate objects from the configured branch/trunk or VCS repository tag to the ODI repository, select one of the following options:
    • All Objects - Select this option to populate all objects to the ODI repository.
    • Selected Objects - Select this option to select the objects to be populated to the ODI repository. You can select the objects from a list of all ODI objects present in the VCS branch/trunk or tag.

      Note:

      • You must choose each child object explicitly to select it for population in the population window. If you choose the folder, the child object (Mappings, Packages and so on) will not be selected.
      • By default, all ODI objects present in the VCS branch/trunk or tag are displayed including objects that are already populated. You can click Show/Hide already populated objects to hide objects that are already populated.
  4. If the current ODI work repository has existing objects, the Delete existing objects from ODI work repository check box is enabled. Select the check box to remove the existing objects and populate the ODI work repository with ODI objects from the VCS branch/trunk or tag.
  5. Click OK.

    A confirmation dialog appears.

  6. Click Yes on the confirmation dialog.

    An Import Report appears with details of the objects populated in the ODI repository and the failed objects.

  7. View the Import Report and close the report.
  8. Verify that the version controlled ODI objects are populated in the ODI Studio.

21.6 Managing Tags

Note:

In Git offline mode, as multiple ODIs are configured to the same branch, ODI will lock the remote Git branch. This is done so that no new changes are pushed to the remote branch while creating tags.

It will be unlocked after the Create Tag process is complete.

You can create a full tag, a partial tag, and a branch from a tag present in the VCS repository.

Note:

The branch name and the tag name must be different. If the branch name and tag name are the same, the branch name is not auto discovered.

21.6.1 Creating a Full Tag in the VCS Repository

A tag is identification text that you can assign to identify a set of consistent objects versions, or the entire repository in VCS.

You can create a full tag in the VCS repository from all the objects present in the branch or the trunk in the ODI repository.

This will enable you to create a consistent set of ODI artifacts in the VCS Repository, which can be shared with other users who can create a new repository from a full tag.

To create a full tag in the VCS repository:

  1. Click Team> VCS Actions> Create Full Tag.
  2. Specify the options on the Create Full Tag dialog.
  3. In the Tag field, enter a unique name for the tag.
  4. Verify the name of the VCS branch or trunk.

    Note:

    This is a read-only field.
  5. In the Comments field, enter a description for the tag.
  6. Select the type of objects that must be included in the full tag:
    • Only Version controlled objects with its dependencies from ODI Repository — Select this to create a full tag for version controlled objects with its dependencies in ODI Repository. It will not include non-versioned ODI repository objects.
    • All objects from ODI Repository — Select this to create a full tag for all objects present in the ODI Repository.
  7. Select Regenerate and Version Scenarios to regenerate and version scenario objects of the selected ODI objects and their dependants.
  8. Click OK to create the tag.

    A success dialog appears if the full tag is created successfully.

  9. Click OK.

21.6.2 Creating a Partial Tag in the VCS Repository

You can create a partial tag from the subset of ODI artifacts present in the trunk or branch of the VCS repository.

This will enable you to create a consistent set of ODI artifacts in the VCS repository, which can be shared with other users who can create a new repository from a partial tag.

To create a partial tag in the VCS repository:

  1. Click Team> VCS Actions> Create Partial Tag.
  2. Specify the options on the Create Partial Tag dialog.

    For more information, see "Create Partial Tag Options".

  3. Click OK to create the tag.
21.6.2.1 Create Partial Tag Options

The following table describes the options that you need to specify on the Create Partial Tag dialog.

Table 21-10 Create Partial Tag Options

Options Description

Tag

Name of the partial tag.

Branch/Trunk

Name of the branch or trunk to which ODI is configured.

Comments

Log message, which describes the changes you are committing.

Include all security objects

Select to include all security objects.

Selected Objects

Objects to be added. To add objects, drag-and-drop the supported objects from the navigator tree. You can also right-click the object and select Add to Partial Tag.

Dependent Objects

Objects dependent on the selected object.

Allow only Versioned Objects

Select to allow only versioned objects to be added to the partial tag.

Note:

If you select the Allow only Versioned Objects check box and try to add a non-versioned object, a message will be displayed conveying that adding a non-versioned object is not allowed.

Regenerate and Version Scenarios

Select to regenerate and version scenario objects of the selected ODI objects and their dependants.

21.6.3 Creating a Branch from a Tag present in the VCS Repository

You can create a new branch from a tag that exists in the VCS repository.

Note:

When the local Git is not in sync with the remote Git, we can either continue to create the new branch with tag or sync both and create the new branch.

To create a branch from a tag:

  1. Click Team> VCS Actions> Create Branch from Tag.
  2. Specify the options on the Create Branch from Tag dialog.

    For more information, see "Create Branch from Tag Options".

  3. Click OK.

    A success Information dialog appears.

  4. Click OK.
21.6.3.1 Create Branch from Tag Options

You need to specify the following options on the Create Branch from Tag dialog.

Table 21-11 Create Branch from Tag Options

Option Description

Branch

Name of the branch.

Tag

List of tags for the ETL project configured in the ODI repository.

Comments

Log message, which describes the changes you are committing.

21.7 Unlocking the ODI Repository

The ODI Repository may get locked during the VCS Tag creation. You cannot make any changes to the ODI Repository in a locked state. Sometimes due to unexpected errors during Tag creation, the ODI Repository may remain in the locked state.

In such situations, you can run the OdiLockUnlockVCSRepository tool to unlock the ODI Repository. For more information about running a tool from a command line, see the "Using a Tool From a Command Line" section in Oracle Data Integrator Tools Reference.

For more information about the OdiLockUnlockVCSRepository tool, see the "OdiLockUnlockVCSRepository" section in Oracle Data Integrator Tools Reference.

Note:

You must have VCS Administrator privileges to run the OdiLockUnlockVCSRepository command.

21.8 Managing Versions

21.8.1 Adding Non-versioned ODI Objects to the VCS Repository

You can add all or multiple non-versioned ODI objects to the VCS repository.

To add non-versioned ODI objects to the VCS repository:

  1. Click Team> VCS Actions> Add Non-versioned Objects.

    A list of all the non-versioned ODI objects is displayed.

  2. Select the ODI Objects that you want to add to the VCS repository.

    Select multiple ODI objects or all ODI objects listed in the Add ODI Objects to VCS dialog.

  3. In the Comments field, enter a description for the ODI objects that you are adding to the VCS repository.
  4. Select Include Dependencies to add the dependent objects of the selected ODI objects and version them.
  5. Select Regenerate and Version Scenarios to regenerate and version scenario objects of the selected ODI objects and their dependants.
  6. Click OK.

    A success Information dialog appears.

  7. Click OK.

    Note:

    When you add container objects to the VCS, all its child objects are also added to the VCS.

21.8.2 Adding Non-versioned Child Objects under a Versioned Container to the VCS Repository

You can add non-versioned child objects of a versioned container to the VCS repository.

To add non-versioned child objects of a versioned container to the VCS repository:

  1. Right-click the versioned container whose non-versioned child objects you want to add to the VCS repository.
  2. Select Version> Add Non-versioned Objects to VCS.

    The Add ODI Objects to VCS dialog appears.

  3. Select Include Dependencies to add and version the dependent objects of the listed child objects.
  4. In the Comments field, enter a description for the child objects that you are adding to the VCS repository.
  5. Select Regenerate and Version Scenarios to regenerate and version scenario objects of the selected child objects and their dependants.
  6. Click OK.

    A success Information dialog appears.

  7. Click OK.

21.8.3 Adding a Single Non-versioned ODI Object to the VCS Repository

You can add a single non-versioned ODI object to the VCS repository.

To add a single non-versioned ODI object to the VCS repository:

  1. Right-click the ODI object (example, folder, model, datastore, packages, etc.) that you want to add to the VCS repository.
  2. Select Version> Add to VCS.

    The Add ODI Objects to VCS dialog appears.

    Note:

    The Add ODI Objects to VCS dialog lists the child ODI objects that need to be added along with the selected ODI object.
  3. In the Comments field, enter a description for the ODI objects that you are adding to the VCS repository.
  4. Select Include Dependencies to add and version the dependent objects of the selected ODI objects.
  5. Select Regenerate and Version Scenarios to regenerate and version scenario objects of the selected ODI objects and their dependants.
  6. Click OK.

    A success Information dialog appears.

  7. Click OK.

    Note:

    When you add a container object to the VCS, all its child objects are also added to the VCS.

21.8.4 Deleting, Moving, and Renaming a Version Controlled ODI Object in the VCS Repository

You can delete, move, and rename version controlled ODI objects in the VCS repository with the help of the standard ODI context menu.

21.8.4.1 Deleting a Version Controlled ODI Object

To delete a version controlled ODI object from the VCS repository:

  1. Right-click the ODI object that you want to delete.

  2. Select Delete.

    or

  1. Select the ODI object that you want to delete.
  2. Press the Delete key.
21.8.4.2 Moving a Version Controlled ODI Object

To move a version controlled ODI object in the VCS repository:

  1. Select the ODI object that you want to move.

  2. Drag and drop it into the destination container.

    or

  1. Right-click the ODI object that you want to move.
  2. Select Cut.
  3. Right-click the destination container into which you want to move the object.
  4. Select Paste.
21.8.4.3 Renaming a Version Controlled ODI Object

To rename a version controlled ODI object in the VCS repository:

  1. Right-click the ODI object that you want to rename.
  2. Select Open.

    The ODI object editor is displayed.

  3. Edit the Name field to rename the ODI object.

21.8.5 Creating Versions of a Version Controlled ODI Object

You can create a version for two types of version controlled ODI objects – First Class Objects (FCO) and Container Objects.

Whenever you modify a version controlled ODI object, you can create a new version of it. When you create a version of a container object, all the child objects are also versioned.

To create versions of a version controlled ODI object:

  1. Right-click the ODI object for which you want to create a version.
  2. Select Version> Create VCS Version.
  3. Verify the information on the Create Version dialog.

    For more information, see "Create Version Options"

  4. Click OK.

    A success Information dialog appears.

  5. Click OK.
21.8.5.1 Create Version Options

When creating a version of a version controlled parent container object, information regarding the child objects is also displayed in the dialog.

The following table describes the options that you need to specify on the Create Version dialog.

Table 21-12 Create Version Options

Option Description

Name

Name of the child object to be created.

Note:

This is a read-only field.

Type

Type of child object to be created.

Note:

This is a read-only field.

Path

Path of the child object present in the VCS repository.

Note:

This is a read-only field.

Comments

Description of the version created.

Child Objects (only for container objects)

Table specifying if the child object was added, modified, or deleted.

Include Dependencies

Select to add and version the dependent objects of the selected ODI objects.

Regenerate and Version Scenarios

Select to regenerate and version scenario objects of the selected ODI objects and their dependants.

21.8.6 Restoring a Version Controlled ODI Object to its Previous Version

You can restore a version controlled ODI object to its previous version or revision in the VCS repository.

To restore a version controlled ODI object to its previous version:

  1. Right-click the ODI object that you want to restore from the VCS repository.
  2. Select Version> Restore from VCS.
  3. Specify the options on the Restore Object from VCS Repository dialog.

    For more information, see "Restore Object from VCS Repository Options".

  4. Click OK.
  5. See the Import Report to confirm if the object has been imported successfully and close the report.
  6. If you choose to restore with merge, you need to perform additional steps that are mentioned in "Restore with Merge".
21.8.6.1 Restore Object from VCS Repository Options

The following table describes the options that you need to specify on the Restore Object from VCS Repository dialog.

Table 21-13 Restore Object from VCS Repository Options

Option Description

Name

Name of the ODI object to be restored.

This is a read-only field.

Type

Type of ODI object to be restored.

This is a read-only field.

Path

Path of the ODI object present in the VCS repository.

This is a read-only field.

Select Version

Click to access the Version Selection dialog and select a particular version of the ODI object present in the Subversion repository.

Version

Displays the version of the ODI object selected.

You can also manually enter the version number here.

Restore with Merge

Select to restore an ODI object using the Merge option.

For more details about performing a merge, see "Restore with Merge".

Restore child objects with Merge

Select to restore an ODI object along with its child objects using the Merge option.

21.8.6.2 Restore with Merge

When you perform the steps to restore an ODI object to its previous version by selecting the Restore with Merge option, the differences between the selected version and the merged object are shown on the Version Compare Results window. After reviewing the Version Compare Results, the user can choose to proceed to perform the merge by using the Perform Merge icon (Perform Merge icon). This will open the merge results for the merge to restore the ODI object.

Note:

  • The Perform Merge icon (Perform Merge icon) is enabled only when the Restore with Merge option is selected in the Restore Object from VCS Repository dialog.

  • If the user chooses not to perform the merge by using the Perform Merge icon (Perform Merge icon), the object will not be restored.

To restore with merge:

  1. Perform the steps to restore an ODI object to its previous version by selecting the Restore with Merge option.

    For more information, see "Restoring a Version Controlled ODI Object to its Previous Version".

  2. On the Version Compare Results window, click the Perform Merge icon (Perform Merge icon).

    If a Container object is being restored, the Merge Results window appears with a list of the merged objects.

    If an FCO is being restored, the Merge Conflict Resolution tab appears showing the differences between the versions of the object.

    Note:

    When an FCO is being restored, Merge Object Selection does not apply since there is only one object involved and an ODI merge is not created.
  3. The Merge Object Selection tab provides options to filter the merge results and perform actions on the merged objects.

    For more information, see "Merge Object Selection".

  4. Perform the following steps to resolve any conflicts:

    1. On the Merge Object Selection tab, select the conflicting object and click the Perform Merge icon (Perform Merge icon).

      The Merge Conflict Resolution tab appears showing the differences between the versions of the object.

      For more information on resolving conflicts, see "Merge Conflict Resolution".

    2. Perform step "a" to resolve all the conflicting objects.

  5. Close the Merge Results window.

Note:

'Restore with merge' from a version with action as ‘Renamed/Copied/Moved’ will result in 'no difference found', when the ODI object is already restored to the immediate previous version of 'Renamed/Copied/Moved'.

Creating a version after renaming or moving the ODI object involves the following steps:
  1. Creating a version with action as 'Renamed/Copied/Moved', where the existing XML file is copied to the new location in VCS but the content of the XML file remains the same as its immediate previous version.
  2. Creating a version with action as 'Modify' which contains the modified XML content.

If the ODI object is already restored to the immediate previous version mentioned in step 1, restoring to the version created at step 1 (that is, the version with action as 'Renamed/Copied/Moved') will result in 'no difference found'. In this case, the user should restore to the version created at step 2 (that is, the version with action as 'Modify').

21.8.6.2.1 Merge Object Selection

The Merge Object Selection tab provides options to filter the merge results, view the merge objects, and handle merge conflicts on the merged objects.

Merge Object Filter Criteria

The following tables describe the various filter options that you need to specify in the Merge Object Selection tab on the Merge Results dialog.

Table 21-14 Merge Filters

Option Description

Merge Status

Select the merge status of the merge to be displayed.

Merge Name

Select the name of the merge to be displayed.

Table 21-15 Merge Object Filters

Option Description

Show Full Object Paths

Select to view the full paths of the merge objects.

Note:

If this is not selected, only the names of the merge objects are shown.

Merge Object Status

Select to display the merge objects displayed based on their merge status. You may select all, in conflict, added, deleted, or merged objects.

Merge Object Owner

Select to display merge objects based on their owner.

Object Type

Select to display merge objects based on their type.

Merge Objects

The Merge Objects table lists the merge objects along with its Conflict Status, Merge Issue, Details of Merge Issue, Merge Status, Merge Action, Type, and Merge Object Owner. It also has two columns where you can mark the object as merged and accept its merge status.

Note:

The merge objects are sorted alphabetically by their name. You can sort the merge objects by any column by clicking the column header.

Handling Merge Conflicts

The following types of merge conflicts arise when performing a merge:

  1. Add Conflict

    This happens when an object is created with the same name or code in both source and target repositories. Objects with add conflicts are displayed in the Merge Object Selection tab with a merge status as ‘Add Pending’.

    You can rename the object or update the object’s code in the target repository, select Accept Merge Status, and click the Save icon (Save icon) to update the merge status of the object to ‘Added’.

  2. Delete Conflict

    This happens when an object is deleted from the source repository. Objects with delete conflicts are displayed in the Merge Object Selection tab with a merge status as ‘Delete Pending’.

    You can select Accept Merge Status and click the Save icon (Save icon) to update the merge status of the object to ‘Deleted’.

  3. Changed Object Conflict

    This happens when an object is changed in the source and target repositories. Objects with Changed Object conflicts are displayed in the Merge Object Selection tab with a merge status as ‘In Progress’.

    You can resolve the conflict, select Mark Object Merged, and click the Save icon (Save icon) to update the merge status of the object to ‘Completed’.

    Note:

    If you select Mark Object Merged without resolving the conflict, the conflict will be ignored and the object will not be updated.

Click the Set all as either Mark Object Merged or Accept Merged Status icon (Set all as either Mark Object Merged or Accept Merged Status icon) or Unset all as either Mark Object Merged or Accept Merged Status icon (Unset all as either Mark Object Merged or Accept Merged Status icon) to select or deselect all columns to mark the objects as merged (Mark Object Merged) or accept their merge status (Accept Merge Status).

Note:

When you mark an object that supports validation as merged, automatic validation will be performed and the validation results will be displayed if any issues are detected.

The following table describes the various actions that can be performed on the merged objects.

Table 21-16 Handling Merge Conflicts

Action Merge Status Merge Action Mark Object Merged Accept Merge Status

Object is merged

Completed

Object is added

Added

Merge object has changed object conflict

In Progress

Merge object has changed object conflict and is marked as merged

Marked as Merged

Yes

Merge object has changed object conflict, is marked as merged, and saved

Completed

Yes

Merge object has an add conflict

Add Pending

Merge object has an add conflict and is marked as merged

Add Pending

Marked as Merged

Yes

Merge object has an add conflict and its merge status is accepted

Add Pending

Marked for Addition

Yes

Merge object has an add conflict, is marked as merged, and saved

Addition Skipped

Addition Skipped

Yes

Merge object has an add conflict, its merge status is accepted, and is saved

Added

Added

Yes

Merge object has a delete conflict

Delete Pending

Merge object has a delete conflict and is marked as merged

Delete Pending

Marked as Merged

Yes

Merge object has a delete conflict and its merge status is accepted

Delete Pending

Marked for Deletion

Yes

Merge object has a delete conflict, is marked as merged, and saved

Deletion Skipped

Deletion Skipped

Yes

Merge object has a delete conflict, its merge status is accepted, and is saved

Deleted

Deleted

Yes

Note:

  • If multiple objects (parent and child) are in 'Add Pending' status, the parent object should be marked for addition followed by the child object.

  • If multiple objects (parent and child) are in 'In Progress' status, the changed object conflicts can be resolved in any order.

  • If multiple objects (parent and child) are in 'Delete Pending' status, the delete conflicts can be resolved in any order. If the user selects 'Merge status accepted (Deleted)' for the parent object, then the child object should also be resolved as 'Merge status accepted (Deleted)'. That is, if the parent is deleted, the child status should also be deleted as the child cannot exist without the parent. User can select 'Merge status accepted' for the child object and 'Marked as merged (Delete skip)' for the parent object.

21.8.6.2.2 Merge Conflict Resolution

The Merge Conflict Resolution tab provides options to navigate between the conflicts, add objects, expand or collapse nodes in the tree, save merge result object, mark object conflict as fixed, restore a version, use source version as repository object, edit an object, edit display options, and print a report.

The merge result tree contains objects that have no merge conflicts, while the left tree contains objects from the source version and the right tree contains objects from the repository object. You can select objects from the left or the right tree and add it to the merge result tree. For more information, see "Table 21-17".

After all conflicts are resolved, you can click on Save the Merge Object to the repository icon (Save the Merge Object to the repository icon) to update the repository object with the values on the merge result tree.

Icons on Merge Conflict Resolution tab

The following table describes the various icons appearing on the Merge Conflict Resolution tab.

Table 21-17 Icons on Merge Conflict Resolution tab

Icon Name Description
Refresh icon

Refresh

Refreshes the results.

Expand All icon

Expand All

Expands all the nodes in the tree.

Collapse All icon

Collapse All

Collapses all the nodes in the tree.

First Conflict icon

First Conflict

Jumps to the first conflict.

Previous Conflict icon

Previous Conflict

Jumps to the previous conflict.

Next Conflict icon

Next Conflict

Jumps to the next conflict.

Last Conflict icon

Last Conflict

Jumps to the last conflict.

Select all objects from the source version tree as the Merge Object Tree objects for all current conflicts icon

Select all objects from the source version tree as the Merge Object Tree objects for all current conflicts

Populates the merge tree with the selected object from the left tree and all of its children that are in conflict.

Note:

This is enabled only when the object selected is in conflict.
Select the object from the source version tree as the Merge Object Tree object for the current conflict icon

Select the object from the source version tree as the Merge Object Tree object for the current conflict

Populates the merge tree with the selected object from the left tree.

Note:

This is enabled only when the object selected is in conflict or is a property node.
Ignore Conflict icon

Ignore conflict, i.e. select neither the object from the source version tree or repository object as the Merge Object Tree object for the current conflict

Populates the merge tree with no object from the left or right tree.

Note:

This is enabled only when the object selected is in conflict or is a property node.
Select the object from the repository object tree as the Merge Object Tree object for the current conflict icon

Select the object from the repository object tree as the Merge Object Tree object for the current conflict

Populates the merge tree with the selected object from the right tree.

Note:

This is enabled only when the object selected is in conflict or is a property node.
Select all objects from the repository object tree as the Merge Object Tree objects for all current conflicts icon

Select all objects from the repository object tree as the Merge Object Tree objects for all current conflicts

Populates the merge tree with the selected object from the right tree and all of its children that are in conflict.

Note:

This is enabled only when the object selected is in conflict.
Save the Merge Object to the repository icon

Save the Merge Object to the repository

Updates the repository object with the values on the merge tree.

Note:

This is enabled only when all conflicts are resolved.
Mark object conflicts as resolved icon

Mark object conflicts as resolved

Marks all object conflicts as resolved.

Restore a version as the repository version icon

Restore a version as the repository version

Restore a version

Use the current source version as the target repository version icon

Use the current source version as the target repository version

Use Source version as the Repository object

Edit repository object icon

Edit repository object

Edit FCO object

Coloring and Filtering icon

Coloring and Filtering

Displays the Display Options dialog, where colors can be assigned to fields and objects.

Reset All Filters to default icon

Reset All Filters to default

Resets all filters to the default.

Generate report icon

Generate report

Generates a PDF report of the merge objects.

Merge Source Indicator

You can view the source of the merge result object from the Merge Source column in the Merge Result tree.

Table 21-18 Icons on Merge Source Column

Icon Description
Left Tooltip

Merge source is from the left

Right Tooltip

Merge source is from the right

Mixed Tooltip

Merge source is a combination of left, right, or neither

Neither Tooltip

Merge source is neither from left nor right

Merge Object Colors

The merge objects on the version tree will have different colors assigned to them based on the action performed.

By default, added objects are green, modified objects are yellow, deleted objects are red, and unchanged objects are not colored. You can click on Coloring and Filtering icon (Coloring and Filtering icon) to customize the colors.

21.8.7 Restoring a Deleted Version Controlled ODI Object in ODI Repository

If you accidently delete a version controlled object in the ODI repository, you can restore it from the VCS repository.

To restore a deleted version controlled ODI object in the ODI repository:

  1. Click Team> VCS Actions> Restore Deleted Object.

    The Restore Deleted ODI Object dialog appears.

  2. Under Version Search Criteria, specify the criteria to search versions of the object in the VCS repository.
  3. Click Apply. All the version controlled objects that were deleted from the ODI repository are listed under Versions.
  4. Review the details of each of the versions of the ODI object that are listed.
  5. Select the version that you want to restore and click the Restore Object icon (Restore Object icon).
  6. See the Import Report to confirm if the object has been imported successfully and close the report.
  7. Click Close on the Restore Deleted ODI Object dialog.
21.8.7.1 Version Search Criteria - Restore Deleted Object

The following table describes the options that you need to specify in the Version Search Criteria section in the Restore Deleted ODI Object dialog.

Table 21-19 Version Search Criteria - Restore Deleted Object Options

Option Description

Date Range

Select to filter the deleted versions by their range of dates.

Version Range (Only applicable to Subversion)

Enter the first and last version to view all the versions within this range.

Note:

If the Version Range fields are left empty, all versions of the object are displayed. If the lower limit of the version range is not specified, all the versions that are lesser than the specified upper limit are displayed. Similarly, if the upper limit of the version range is not specified, all the versions that are greater than the specified lower limit are displayed.

Path

Path of the ODI object in the ODI repository.

Comments

Enter the log message, which describes the changes that were committed in the selected version of the object.

Name

Enter the name of the deleted version controlled object.

Whole text match

Select to perform search for the exact text mentioned in the Path, Comments, and Name fields.

Show restored and duplicate objects

Select to display all objects that have been:

  • deleted and restored.

  • deleted and have the same name as an existing object.

21.8.8 Viewing Pending Changes from ODI Repository

ODI Integration with VCS provides the option to view all objects that are modified in the ODI Repository but are not yet committed to the VCS Repository.

You can view the pending changes which need to be committed to the VCS Repository and then create a new version for the selected objects, or ignore the changes and restore the selected objects to their previous version.

To view pending changes:

  1. Click Team > VCS Actions > Pending Changes.

    The Pending Changes (VCS) window appears with a list of modified versioned ODI objects.

    For more information on the various options available on the Pending Changes (VCS) window, see "Pending Changes (VCS) Options".

  2. Select the objects for which you want to view the pending changes and click Create Version.

    The Pending Changes Commit dialog appears displaying the selected objects and their child objects.

  3. Click OK.
21.8.8.1 Pending Changes (VCS) Options

The following table describes the options available on the Pending Changes (VCS) window.

Table 21-20 Pending Changes (VCS) Options

Option Description

Refresh

Refreshes the current window by resending a query to the ODI repository.

Create Version

Creates a version for the selected objects.

Note:

This option is enabled when the Select check box is selected for at least one row.

Restore Latest Version

Ignores the current change in the object and restores it to its previous version.

Note:

This option is enabled when the Select check box is selected for only one row.

Compare Action

Compares the selected object with its previous version.

Note:

This option is enabled only when one row is highlighted.

21.8.9 Viewing the Version History of a Version Controlled ODI Object

You can view the version history of a version controlled ODI object across trunk, multiple branches, and tags of the VCS project in the VCS repository.

To view the version history of an ODI object:

  1. Right-click the ODI object for which you want to view the version history.
  2. Select Version> Version History.
  3. Under Version Search Criteria, specify the criteria to search the versions of the selected ODI object.
  4. Click Apply.
  5. Under Versions, all the versions of the selected ODI object that exist in the VCS repository are listed.
  6. Review the version history details for each of the versions of the ODI object.
  7. Click Close.

You can compare versions of the ODI object using the steps mentioned in "Comparing Versions of an ODI Object from the Version History Window".

21.8.9.1 Version Search Criteria - Viewing Version History

The following table describes the options that you need to specify in the Version Search Criteria section in the Version History window.

Table 21-21 Version Search Criteria - Viewing Version History Options

Option Description

Branch/Tag/Trunk

Select Branch, Tag, or Trunk depending on what the ODI repository is mapped to.

Branch/Tag

Select the appropriate Branch or Tag from the list.

Note:

This list is populated only if the Branch or Tag check box is selected.

Date Range

Select to enter the range of dates within which the version was created.

Version Range (Only applicable to Subversion)

Enter the first and last version to view all the versions within this range.

Note:

If the Version Range fields are left empty, all versions of the object are displayed. If the lower limit of the version range is not specified, all the versions that are lesser than the specified upper limit are displayed. Similarly, if the upper limit of the version range is not specified, all the versions that are greater than the specified lower limit are displayed.

Path

Path of the ODI object in the ODI repository.

Note:

You can use * as a wildcard character.

Comments

Enter the log message, which describes the changes that were committed in the selected version of the object.

Note:

You can use * as a wildcard character.

Whole text match

Select to perform search for the exact text mentioned in the Path and Comments fields.

21.8.10 Comparing Versions of an ODI Object from the Version History Window

You can compare versions of an ODI object from the Version History window to see the difference between them. You can either compare two versions of an object in the VCS repository, or compare one version of the object in the VCS repository with the current object in the ODI repository.

To compare versions of an ODI object:

  1. Right-click the ODI object for which you want to compare the versions.
  2. Select Version> Version History.
  3. Under Version Search Criteria, specify the criteria to search the versions of the selected ODI object.
  4. Click Apply. All the versions of the selected ODI object that exist in the VCS repository are listed under Versions.
  5. Do one of the following:
    • To compare two versions of the object in the VCS repository:

      Select the two versions that you want to compare, click the Compare icon (Compare icon), and then select Compare Selected Versions.

      For information on the types of compare, see "Types of Compare".

    • To compare a version of the object in the VCS repository with the current object in the ODI repository:

      Select the version that you want to compare with the current object in the ODI repository, click the Compare icon (Compare icon), and then select Compare With Repository Object.

  6. On the Version Compare Results window, view the differences between the two versions.

    The Version Compare Results window provides icons to navigate through the differences, filter the compare results, change the display options (color coding), generate report, expand or collapse the nodes in the tree, and perform merge.

    For more information, see "Icons on the Version Compare Results Window".

  7. Click Close.
21.8.10.1 Types of Compare

When two versions of an object are compared in the VCS repository, the following types of compare are performed:

Three Way Compare

A three way compare will be performed if the two versions compared have a base version as their common ancestor. The Version Compare Results window will display the differences between all three versions. The base version for a three way compare is displayed underneath the two objects that were selected to be compared.

Two Way Compare

A two way compare will be performed if:

  • the two versions compared do not have a base version as their common ancestor.

  • the user explicitly chooses not to perform a three way compare.

The Version Compare Results window will display the differences between the two versions. The lack of a base version at the bottom of the Version Compare Results window indicates that a two way compare was performed.

21.8.10.2 Icons on the Version Compare Results Window

The following table describes the icons that are available on the Version Compare Results window.

Table 21-22 Icons on the Version Compare Results window

Icon Name Description

Refresh icon

Refresh

Refreshes the results.

Go to First Difference icon

Go to First Difference

Jumps to the first difference.

Go to Previous Difference icon

Go to Previous Difference

Jumps to the previous difference.

Go to Next Difference icon

Go to Next Difference

Jumps to the next difference.

Go to Last Difference icon

Go to Last Difference

Jumps to the last difference.

Coloring and Filtering icon

Coloring and Filtering

Displays the Display Options dialog, where colors can be assigned to fields and objects.

Reset All Filters icon

Reset all Filters

Resets all filters to the default.

Generate Report icon

Generate Report

Generates the report.

Expand All icon

Expand All

Expands all the nodes in the tree.

Collapse All icon

Collapse All

Collapses all the nodes in the tree.

Perform Merge icon

Perform Merge

Merges the changes.

For more information, see "Restore with Merge" and "Performing a Merge".

21.8.11 Viewing Version Tree of a Version Controlled ODI Object

You can view the version history of a version controlled ODI objects across multiple branches, tags, or trunk present in the VCS repository in the form a version tree graph.

Each revision node in the version tree graph represents a revision in the VCS repository. The nodes are distinguished by different colors. Added items are green, deleted items are red, modified items are black, renamed/moved items are blue, and restored items are yellow.

To view version tree of a version controlled ODI object:

  1. Right-click the ODI object and select Version> Version Tree.

    The Version Tree Editor appears showing different versions, tags, and branches for the object in the VCS repository.

  2. Scroll horizontally to view the entire version tree.

    Note: Version nodes are displayed as ovals enclosed in rectangles and the action nodes are displayed as ovals.

  3. Click the version nodes to view the version attributes under Version Properties.
  4. Close the Version Tree Editor.

You can compare versions of the ODI object using the steps mentioned in "Comparing Versions of an ODI Object from the Version Tree Editor".

21.8.12 Comparing Versions of an ODI Object from the Version Tree Editor

You can compare versions of an ODI object from the Version Tree Editor to see the difference between them. You can either compare two versions of an object in the VCS repository, or compare one version of the object in the VCS repository with the current object in the ODI repository.

To compare versions of an ODI object:

  1. Right-click the ODI object whose versions you want to compare.
  2. Select Version> Version Tree.
  3. Do one of the following:
    • To compare two versions of the object in the VCS repository:

      Select two version nodes that you want to compare, click the Compare icon (Compare icon), and then select Compare Selected Versions.

      For information on the types of compare, see "Types of Compare".

    • To compare a version of the object in the VCS repository with the current object in the ODI repository:

      Select the version node that you want to compare with the current object in the ODI repository, click the Compare icon (Compare icon), and then select Compare With Repository Object.

  4. On the Version Compare Results window, view the differences between the versions.

    The Version Compare Results window provides icons to navigate through the differences, filter the compare results, change the display options (color coding), generate report, expand or collapse the nodes in the tree, and perform merge.

    For more information, see "Icons on the Version Compare Results Window".

  5. Click Close.

21.9 Performing Pull/Push

Note:

Pull and Push menu options will be enabled, only if ODI is configured with the Git offline mode.

Pull

A Pull operation enables you to make the local Git branch up to date with the remote Git branch, if it is not already up-to-date.

To perform a Pull operation:

  1. Click Team, VCS Actions, and then click Pull.

    Changes from the remote Git are fetched to the local Git now.

    Note:

    After performing a pull operation, you may need to populate ODI Repository from VCS in order to fetch the changes from the remote Git to the local Git. This is required only if the pull operation is performed for the first time. For subsequent pull operations, there is no need to populate ODI Repository from VCS. For more information on populating ODI Repository from VCS, see Populating an ODI Repository from a VCS Branch/Trunk or Tag.

  2. If ODI artifacts are in a conflict state, a prompt to manually resolve conflicts appears.
  3. Click Launch Conflict Window.

    The Smart Merge Conflict Resolution window opens.

  4. Resolve the conflicts manually.

    Once all the conflicts are resolved, a version is created for the resolved objects and refreshed. The Pull operation is now complete.

    To make the changes available in the remote Git, you must perform the Push operation.

Push

If ODI is in offline mode, then all VCS operations(add/create version/restore/restore deleted) will commit changes only to the local Git.

The changes will not be pushed to the remote Git unless you perform a Push operation.

To perform a Push operation:

  1. Click Team, VCS Actions, and then click Push.

    If local branch is already in sync with the remote branch, Push will be successful.

  2. If ODI detects the local branch as being behind the remote branch, then an error message appears.

  3. To sync the local branch and the remote branch, perform Pull operation.

    The local branch is now up to date with the remote branch, and the Push is successful.

21.10 Performing a Merge

You can perform a merge operation, to merge the changes done in the VCS branch/trunk or tag to the current ODI repository.

To perform a merge:

  1. Click Team> VCS Actions> Merge.

  2. Select the Merge Type as either Branch/Trunk or Tag.

    Note:

    The Branch or Trunk option will be enabled based on the VCS selected.
  3. Select a source from the Source drop-down list.

  4. Specify a name for the merge in the Merge Name field.

    You can choose to go ahead with the default merge name.

  5. Select Use object change detection to ensure that source objects which haven’t been changed from the last merge are not compared.

  6. Select Use three way compare to provide the option of performing a Three Way Compare.

    For more information, see Three Way Compare.

  7. Click OK. The merge is performed and the Merge Summary is displayed.

  8. Inspect the conflicts in the objects that are modified in the branch.

  9. Close the Merge Summary. The Merge Results window appears with the Merge Objects list.

    You may filter the Merge Objects list to show only the conflicting objects.

  10. Perform the following steps to resolve the conflicts:

    1. On the Merge Object Selection tab, select the conflicting object and click the Fix Merge Conflict icon (Fix Merge Conflict icon).

      The Merge Conflict Resolution tab appears showing the differences between the versions of the object.

      For more information on resolving conflicts, see Merge Conflict Resolution.

    2. Perform step "a" to resolve all the conflicting objects.

  11. Close the Merge Results window.

21.10.1 Viewing Merge Summary

You can see the Merge Summary report for the previous merges that you have performed.

Tip:

The Merge Summary report can also be accessed from the Merge Results dialog, which is displayed when you perform a merge.

To view the merge summary:

  1. Click Team> VCS Actions> Merge Summary.
  2. Select a merge status to view merge summary for all, completed, or in progress merges.
  3. Select a merge name to display the associated merge summary.
  4. Click OK.

    The Merge Summary dialog is displayed.

  5. View the Merge Summary.

For more information on Merge Summary, see Merge Summary Options.

21.10.1.1 Merge Summary Options

The merge objects are displayed sorted by their name in the Merge Summary. Any issues that occur during the merge are also displayed. You can view the Merge Action in the Merge Summary for objects that have their merge status as ‘Deleted’.

You may perform the following optional actions:

  • Click Save to save the Merge Summary as an XML or HTML report.

  • Select Perform repository object deletions for all the deletes indicated on this merge summary to delete all objects identified to be deleted by the merge.

  • Select Show Merge Results window to display the Merge Results window after closing the Merge Summary dialog.

    Note:

    • This option is only visible after a merge is performed.

    • This option is selected by default. You can deselect the option to avoid proceeding to the Merge Results window.

21.11 Working with Object Flags

When an object is created or modified in Designer Navigator, a flag is displayed in the tree on the object icon to indicate its status. The following table lists these flags.

Table 21-23 Object Flags

Flag Description
inserted icon

Object status is inserted.

updated icon

Object status is updated.

When an object is inserted, updated or deleted, its parent objects are recursively flagged as updated. For example, when a step is inserted into a package, it is flagged as inserted, and the package, folder(s) and project containing this step are flagged as updated.

When an object version is checked in (refer to Working with Versions for more information), the flags on this object are reset.

Note:

When VCS is used and a new version of an object is created, the 'i' and 'u' object flag icons disappear. This indicates that all the modifications done in the object are versioned in VCS.