Repository Package Versioning

This feature was added in version 6.1 of Iguana.

Introduction

Versioned repository packaging allows multiple versions of Iguana to share a single remote Git repository. Individual instances can only view/import channels that are supported by their version or earlier.

Note: This feature was introduced with Iguana version 6.1 to handle changes made to the structure for Iguana projects and channel configuration files.

Prior to Iguana 6.1 all versions of Iguana used the same repository structure so versioning was not necessary.

Interface Changes [top]

When you are importing repository channels into Iguana version 6.1 (or later) you will notice that a version toggle has been added. This toggle allows you to choose the channel version to view in the attached repository.

For example if your repository contains version 6.1.0 and 6.0.x channels, then checking v6.1.0 will show only the version 6.1.0 channels:

Similarly if you check v6.0.0 then you will only see the legacy (pre 6.1) channels:

Note: Iguana instances can only view/import channels that were exported by their version or earlier versions.

For example if a repository contains channels exported from Iguana versions 6.0.x,  6.1.0 and (a future version like) 6.2.0, then Iguana 6.1.0 would not be able to import 6.2.0 channels.

Using Iguana 6.2.0 you would see a toggle for all versions:

However when using Iguana 6.1.0 you would not see the 6.2.0 channels:

If you use a version prior to 6.1.0 then the toggle feature is not available.

Using versioned Repositories [top]

We recommend always using the latest package version for a channel, though you can import previous versions if required. When an older channel is imported the configuration is updated and you can then be export it as the current version. After exporting a current version of an “old channel” you can safely delete the old version from the repository.

Workflow for using versioned repository packages:

  1. Import the current version of the channel.

    If there is a current version of the channel (i.e., one that matches your Iguana Server version) in the repository you should usually use that one. If there is no current version then you will need to import an older version.

    • Check the radio button for the latest server version:
    • Import the channel if it exists.
  2. Import an older version if there is no current version.

    If there is no current version of the channel then you will need to import an older version. You may also wish to import an older version for other reasons, for example you might want to compare old and new code. When you import an older version of the code the configuration will be updated to match the current (importing) server version.

  3. Export the current version of the channel.

    When you export a channel it is automatically saved as the current version (matching your Iguana Server version). We recommend that you export a “base” version of the channel before making changes (Iguana will automatically save it using the current version). Then each time you want publish code changes, simply export the channel again.

  4. Optional: Use Git tools to delete the old version of the channel from the repository.

    We recommend deleting older versions of channels to prevent confusion. For example someone using an older version of Iguana (i.e., 6.0.x) could import the old version thinking it is latest code — because they cannot see the current (6.1.0) version. Iguana cannot remove channels from a repository, you will need to use Git tools (e.g., github, bitbucket etc) to delete the old channels. See the Deleting a Channel from Git to identify the files you need to delete.

Note: If Iguana detects that that only one channel version is present on the remote repository, then it will not display the toggle controls.

Package Structure [top]

This section explains the legacy repository structure (prior to 6.1.0) and the new versioned package structure.

Legacy Repository Structure

If you view the contents of a 6.0.x Iguana remote repository (prior to 6.1.0) with Github or bitbucket etc. you will see a top level folder structure similar to this:

The first four folders contain individual translator projects and include all the local assets and the translator project file. The first three folders are older style Iguana 5 projects that use a legacy translator GUID format. The fourth folder is an Iguana 6 project that uses a more descriptive GUID (containing part of the channel name, the translator component type, and a small ASCII guid at the end). The Channels folder contains the channel configurations for all the channels in the repository. The other and shared folders contain the shared assets for the channels in the repository.

New Package Versioning Structure

Package versioning uses a versioned top level folder that contains all the channels for that version of Iguana. The versioned folder is only visible to the specified version, or later versions, of Iguana (it is invisible to earlier versions).

For example Iguana version 6.1.0 uses the folder IGUANA_CHANNEL_VERSION-6_1_0. The folder structure within the 6.1.0 versioned folder is the same as that described above for Iguana version 6.0.x.

Deleting a Channel from Git [top]

In step 4 of Workflow for using versioned repository packages we suggested that you can delete old channels from the repository for housekeeping purposes. Deleting a channel from a Git Repository is not difficult, you just need to delete all the files for the channel you wish to remove. The specifics of how to delete files will differ a little depending on which Git tools you are using — but the process is the same just delete all the channel files.

If you have any questions please contact us at support@interfaceware.com.

Follow these steps:

  1. Delete the channel configuration information:
    • Open the Channels folder.
    • Locate the corresponding channel folder for the channel you wish to delete
    • For the case of channel CSV Parser the folder is CSV_Parser-C9B4B049531306BB49A9A6851A227101:
    • Open the ChannelConfiguration.xml file inside the folder and take note of any mentioned translator GUIDs ( i.e. <to_mapper guid=”CSV_Parser-To-oXCtI53IRCEoLx”….)
    • Close the file then delete the folder.
  2. Optional: Delete the channel translator files:
    • Navigate back to the top level of the repository (or versioned package folder depending on the channel you are deleting).
    • Identify the translator GUID folders that you took note of in step 1. (i.e. CSV_Parser-To-oXCtI53IRCEoLx for the CSV Parser channel).
    • Delete the folder(s).

Leave A Comment?