Version control

Respresso is build to help the development of software applications that's sources are usually kept under version control. Although Respresso allows you to put all your converted resource files in your own repository - as you would do without Respresso - it would lose collaborative editing for hotfixes without built-in version control. To address this issue, we implemented a basic versioning in the heart of Respresso. It allows you to save a copy of all your resources (and configurations) when you create a release of your app, so you can edit and download them again if you need to issue a hotfix.

Version identifiers

Respresso comes with its own version management. Each resource category (e.g. localization or image) has an independent version list. Each version must have a version identifier, that can be a semver or a named version.

Respresso was originally build to support only semantic versioning, but we added support for named versions when we introduced changeset versions for version merging in localizations. We decided to keep all the features that were implemented thanks to the semver instruction - like the version pattern (1.2+ or 1.2.5+) during sync - but also add support for the less restrictive named versions.

Semantic versioning - aka. semver

The most common versioning system is the major.minor.patch format of the semantic versioning. We decided to use it as the default versioning system with the restriction that there is no support for pre-release versions. When you use this format, Respresso will provide a few extra features, but you can also use named versions.

Versions using a semver identifier, will allow auto incrementing version number during version copy or patching. Also, you will be able to use the version pattern (x.y+ or x.y.z+) during sync, but it will match only the semver versions.
Note: 2.4.6-beta or 1.3.5.7 will not qualify as semver versions in Respresso.

Named versions

Named versions were introduced along with version merging in localizations to allow you a somewhat Git like experience. Named versions allows you to use custom version structure or to create a temporary version for a specific purpose.

You can create a named version that includes only lower case alphanumeric characters extended with dot, hyphen or underscore. For example: feature-about_us, hotfix_typo_on_welcome_screen, 1.2.3.4, or 3.4.5-flavor.

When using named versions, you won't get all the features Respresso offers with semantic versioning. E.g. during sync, you have to use the explicit version name, version patterns are not supported.

Version ordering, thus recency is based on the alphabetical order of the version names. For this reason, you might get a warning in the app that you are not editing the most recent version even if it is the most recent in you own versioning scheme.

Manage versions

Respresso tries to make version management useful but without forcing you to use it. For this reason, Respresso automatically opens the last opened versions, so it can skip the version manager.

How to get to the version manager?

Respresso automatically skips the version selector and management screen when to save you time.

In case you want to access it, you only need to open the desired resource category - as categories have separate versioning - and click the Open version manager link in the breadcrumb section:

How to open the version manager in Respresso
How to access the version manager

Manage versions

The version management screen allows you switch, create, copy, finalize, patch and delete versions:

Version management options in Respresso
Version management options

Open a version

Respresso automatically opens you last opened version in that category. If you want the open an older version or switch back to the latest, you need to open the version manager and click on it's row to open it.

Copy an existing version

When you release your app, you can make a copy from it to use that for further development. (When you do this, it's highly recommended to also finalize the released version.)

To copy a version, you need to click the copy icon on its row's action list and select a new version identifier.

Please note that currently Respresso comes with a limited support for merging versions. In case you want to change multiple versions you will need to execute your changes manually in each version, except for the supported localization merging.

Finalize a version (make it read-only)

If you want to make a fixed checkpoint in your resources you can finalize a version. This will keep all the resources and the generated files, so you can download or sync them later for repeatable builds.

To finalize a version, you need to click the lock icon on its row's action list. Finalized versions will show a lock icon next to the version number.

Keep in mind that a finalized version can not be edited it will be irreversibly marked read-only. (But you can copy or patch it.)

Patch a finalized version

As finalized versions can't be modified, Respresso gives you an option to create patch version from semver versions. It is basically a copy, except it automatically increment patch version while keeping the major and minor versions.

To patch a finalized a version, you need to click the patch icon on its row's action list. This won't show for named version as this is available only for semvers.

Create new empty version

If you want to start a new version from scratch, you just need to click the ˙New empty version˙ button and select a version identifier.

Delete a version

When you don't need a version, you can simply delete it. This is permanent, can't be undone..

Keep in mind, that when you create a chain of change set versions, you need to merge them in creation order to merge all the changes as a change set contains only the changes from a single version. For this reason, make sure that you don't need to merge changes from the version you are going to delete.

To delete a version, you need to click the trash icon on its row's action list.

Check existing file groups for auto-sync

When you set up your auto-sync, you will need to specify the file groups you want to download.

You can list all the available groups for each version in the version manager by hovering the groups icon in its row.

Keep in mind that only those groups will be listed that has at least one file. This requires at least one1 resource added in that version.

Change set versions

When you copy or patch a version, Respresso will automatically make it a change set version. (Older copies/patches won't be upgraded to change set versions, just new ones.)

A change set version is special as it keeps a copy of the initial state when it was created. This allows Respresso to compute the changes that were made in that version without actually tracking the changes like. Thanks to this, Respresso now offers version merging in localizations.

Version merging is now available in beta but only for localizations. Please let us know at info@respresso.io if you are interested in version merging in other resource categories.


  1. If you set up the Flow to put resulting files to separate groups by some condition than you need to add at least one resource for each case.