The Studio Repository
A team collaborating on the mapping in Studio, will share their work via the Studio Repository. Each user works on the mapping by adding, modifying and deleting items in a local workspace. This workspace is simply a folder (with subfolders) on the user's machine, and each item is persisted in an XML file in these folders.
When a user wants to modify an item, the user must check out the item from the repository. The checkout has these consequences:
- Studio places a lock in the repository, so no other user can check it out.
- If the user does not have the latest version of the item in the workspace, Studio will automatically fetch the latest version.
- Before the check out, the item is read-only (disabled) in Studio. But - once checked out - Studio will enable the item, allowing the user to make modifications.
Once the user is done with modifying the item (and often other items) the user commits these changes back to the repository. For all the items being committed, Studio will:
- Save the item back to the repository. This becomes the latest version - previous versions are retained.
- Remove the lock on each item, allowing other users to check them out.
- In case an item was deleted, the commit will execute the deletion and remove the item from the workspace.
- Added and modified items are set read-only in Studio (disabled) and cannot be modified unless checked out again.
Of course, once there is more than one member in the team, it is very common that the workspace becomes outdated - or stale: Other users have checked in newer versions of items and the workspace does not get updated automatically. Studio will mark stale items. Executing a Get Latest Version from Studio will retrieve the latest version of all stale items.
Repository State Indicators
Studio marks the repository state as the left-most icons in the project Explorer treeview:

The entire collection of possible indicators is here:
| Indicator | State | Description |
|---|---|---|
| Checked in | The item is checked into the Repository. If you open the item on the Document canvas, it is locked and you cannot modify anything. In order to unlock the item so you can modify it, you must first check it out of the repository. | |
| Checked in, Stale | The item is checked in (as above) but another user has committed a new version of the item so your workspace no longer contains the latest version. | |
| Checked out by you | The item is checked out to you, so you – and only you – can modify it. No one else in your team can check this item out while you have it checked out. | |
| Checked out by someone else | Another member of your team has checked this item out in order to modify it. If you hover your mouse over the state icon, you will see a tooltip containing the user id of the other team member. As an aside, it can actually also be yourself, if you have opened the same project in a different folder or on another machine and checked the item out there. | |
| Checked out by someone else, Stale | Checked out by someone else (as above) but another user has committed a new version of the item so your workspace no longer contains the latest version. | |
| Added | You have added this item but not yet checked it in to the Repository. At the moment, only you can see this item – nobody else. If other team members do a Get Latest from the Repository, they will not get this item. Check it in to join the club! | |
| Pending delete | You have deleted the item. The delete is pending, waiting for you to commit your changes to the Repository. Once you commit, the item will disappear. | |
| Deleted in Repository | Another user has deleted this item and committed the delete to the Repository. You still have the item locally in your workspace. Delete the item locally or do a Get Latest on the parent on the Project Explorer. |
Repository Actions
There are quite a few actions related to the repository. Many are accessible from the Project Explorer and the Main Menu and Toolbar as shown below. Other actions, such as reverting a commit or undeleting an item are accessible from detail views, more on this further on.
| Project Explorer Context menu | Main Toolbar | Main Menu |
|---|---|---|
![]() | ![]() | ![]() |
The total list of repository actions is:
| Icon | Action | Available in | Description |
|---|---|---|---|
| Get Latest Version (Recursive) | Context Menu, Main Toolbar, Main Menu | This action recurses the entire sub-tree of the selected item and compares the local workspace version with the latest version in the Repository. If the versions are different, the latest version is fetched from the Repository and saved in the local workspace. Items that have been deleted in the Repository but still exist in the workspace will be deleted from the workspace. | |
| Checkout | Context Menu, Main Toolbar, Main Menu | Displays a dialog to select the items to check out. The dialog displays the entire sub-tree of the selected item to enable the selection of the items to check out. | |
| Commit | Context Menu, Main Toolbar, Main Menu | Displays a dialog to select the items to commit. The dialog displays the entire sub-tree of the selected item to enable the selection of the items to include in the commit. | |
| Undo Checkout | Context Menu, Main Toolbar, Main Menu | Displays a dialog to select the items to undo. The dialog displays the entire sub-tree of the selected item to enable the selection of the items to undo. | |
| View History | Context Menu | Opens a new document on the document canvas displaying the version history of the selected item. Here it is possible to compare different versions of the item and revert a given commit. | |
| Repository | Context Menu (Root node only) | This action is only available on the root node (for the entire project). It opens a new document on the document canvas. This document contains a list of all commits in the project, a list of stale items for the current workspace, a list of all current check out locks in the project, a list of all items that have been deleted in the project, and a list of (frozen) copies of the project. | |
| Compare with latest version | Context Menu | If an item is checked out, this action compares the local version with the latest version in the Repository. | |
| Add project to Repository Control | Main Toolbar, Main Menu | Adds a locally created, new project to the Repository. | |
| Clean up Working Folder | Main Menu | Deletes all items in the local workspace and gets the latest version of everything from the Repository. | |
| Repository Manager | Main Menu | Opens a new document on the document canvas with the Repository Manager. The Repository Manager has three tabs: a list of all projects that exist in the Repository (from this list a project can be deleted), a list of deleted projects (from here a project can be un-deleted or purged completely), and a policy tab (currently the only policy that can be set is whether to require a message for all commits or make it optional). |
Item Comparison
When an item is committed to the Repository, Studio, of course, stores the XML document defining the new version. This document is generally quite complex, contains an abundance of internal reference is and does not lend itself well to comparisons. To accommodate for comparison of item versions, Studio also stores the new item version as a readable string. Contrary to the exact XML representation, this readable string is suitable for comparison.
Item compare is a very versatile tool, making it quick and easy to pinpoint the exact differences between two versions of the same item. Below and example, where the Severity has been modified on the System Event connected to a flag on a Target Object Condition Rule:

Item History
Select the View History... item from the
Project Explorer treeview to open a document on the document canvas displaying the version history for the item.

1 | The list displays the versions in reverse chronological order.
|
2 | The selected commit is displayed. The commit display shows all the items contained in the commit. |
3 | Compare two versions. If only one version is selected in the list, the compare will be with the previous version. Select 2 versions to compare these. |
4 | Revert the entire commit. This will show a dialog to supply the message for a new commit. The new commit will revert the selected commit:
|
5 | Restore only the selected version of the item. |
6 | The commit message can be updated. |
Project View
Select the Repository... menu item on
the root node in the project Explorer to open the Repository View on the document canvas.
History Tab

1 | The list displays all the commits for the project:
|
2 | Displays the selected commit. |
3 | Set the Label of the selected commit. |
4 | Create a new project copy based on the selected commit. Copies can be used to “freeze” a given project. For instance, if you use your source map to export data to a third party and wish to freeze a copy of your Source Map that corresponds to the data agreed with the third party. |
5 | Roll back the entire project to the point in time signified by the commit. This will create a new commit containing the item versions prior to the selected commit. |
News Tab
Contains a list of all your stale items = items, where your local version is behind the latest version in the Repository.

Deleted Tab
Contains a list of all the items that has been deleted.

Locks Tab
Contains a list of all the current locks in the Project. Unlock will remove the lock from the Repository (=force undo checkout on behalf of the user).

Right click a lock in the list to display the context menu for that lock:
Undo... | If a lock belongs to the current user, the user can launch the normal Undo Checkout dialog from here. |
Unlock... | If a lock belongs to another user, the current user can delete the lock. Bear in mind, that the original owner of the lock will now have lost the check out of the item, but still have the item unlocked and editable in the local workspace. Thus the original user will be able to modify and save the item locally, but will not be able to check in the local modifications. |
Copies Tab
Contains a list of all the copies of the current project. The purpose of a project copy is to save a frozen state of the project to keep for the duration of a migration that must not be influenced be further development of the project. The typical example is when you use Hopp to export your own data in an off-boarding project. The exported data will at a point be delivered to the receiving party who will begin testing on these data. At that point, your Source Map should be frozen, so you don't suddenly deliver data different for the expectations of the receiving party.
It may anyway become necessary to modify the frozen copy (due to requirements in the ongoing off-boarding project). These modifications to the frozen copy are called Drift. The Copies tabwill show the drift for a project copy. In some cases, it may be necessary to alter the current project, in other cases the drift is very specific to the off-boarding project and should not be taken into account in the current project.
To mark that the drift of an item has been reviewed, the item drift can be set Handled.

1 | The list displays the copies of the current project:
|
2 | The list shows the items that have drifted in the selected project copy:
|
3 | Compares the latest version of the item in the current project with the latest version of the item in the project copy. |
4 | Opens the item in the current project. |
5 | Supply a comment to set the modification as handled. |
6 | Delete the project copy. This only marks the project as deleted. To remove it completely, purge it from the list of deleted projects in the Repository Manager (see below). |
7 | Change the title of the project copy. |
Repository Manager
The repository manager can be found in the Studio main menu in the Repository sub-menu. The manager opens as a document in the document canvas. Use the Repository Manager to delete and purge projects from the Repository and to set Repository policies.
Projects Tab
The projects tab lists all the projects in the Repository.

1 | The list displays all the projects in the Repository:
|
2 | Delete the selected project. This removes the project from the Projects tab and adds it to the Deleted Projects tab. Users will not be able to fetch deleted projects from the Repository. |
Deleted Projects Tab
The tab list all the deleted projects in the Repository.

1 | The list displays all the projects in the Repository:
|
2 | Restore the selected project. This removes the project from the Deleted Projects tab and adds it to the Projects tab. |
3 | Purge the project from the Repository. This action is irreversible and cannot be undone. Use with caution! |
Policies Tab

Set the Commit message policy. It is highly recommended to require a message on all commits.
What About Git (or others?)
Since each team member is, in fact, using Studio to modify items that are persisted as XML files in a local folder structure, there is nothing blocking the use of git or other source control solutions. However, the XML files produced by Studio are quite complex and ripe with internal references based on internal id's. Resolving an eventual merge conflict can be intimidating.
We take pride that Studio empowers people with knowledge of the business and data involved and does not require its users to be developers well versed in source control and the complexities involved. This is why the Studio workflow is simple and straightforward as explained above. That being said, git (or others) can easily be brought into play to handle scenarios outside the daily work in Studio.


