Versionner is a tool to manage software dependencies into Pharo.

Versionner can be seen as a GUI on top of Metacello to hide the complexity of ConfigurationOf objetcs.

Versionner makes some assumptions:

  • there is one and only one development version for your project (anytime). This development version is used to made changes to your project configuration. The release action (used to generate a numbered versions) rely on this development version.
  • the development version is a baseline. It means that a development version does not need to be updated to load latest versions of your project packages.
  • a release is a stable version and creates a numbered version method. This way, all version methods of a configuration will be released versions of your software. Versionner allows you to solve symbolic versions of your dependencies (e.g. Foo #stable => Foo 1.3) at the release time. It enables reproductible loading of your project.

Open Versionner

You can find Versionner in the World menu / tools / Versionner. The first window you will see displays the list of configurations currently loaded into the image. From here, you can:

  • browse configurations
    • with Versionner: double-click on a list item,
    • with the System Browser: select a list item and press cmd+B
  • create a new configuration,
  • load an existing configuration.
Versionner project list
Figure 1 : Versionner project list

You can display an existing configuration by double-clicking on it in the project list. It will open a new window.

Versionner project details
'Figure 1 : Versionner project details

Create a new configuration

Click on the "New project" button. You will be first prompt the project name (without the ConfigurationOf prefix). Then, a window will pop-up showing an empty configuration. You can now update your configuration.

New project
Figure 2 : New project

Update a configuration

The first thing to do is to select the version you want to edit in the versions list. Note that only the #stable and #development versions are displayed by default (tick the browse all box to see all versions). You are now ready to edit the configuration.

WARNING: you will loose your changes if you do not save before unselecting the current version.

  • add packages (internal packages of your project),
  • add dependent project (other projects you depend on). You need that the dependent project configuration is already available in the image.
  • add groups,
  • specify the project repository (use the button),

Edit packages

To edit packages, use buttons on the top right corner of the list:

Versionner packages toolbar

You can add / remove or edit packages. The edition of a selected package allows you to update its requirements:

Versionner edit requirements

Edit dependent projects

To edit dependent projects, use buttons on the top right corner of the list:

Versionner dependent project toolbar

When adding a dependent project, a first dialog asks you to select a configuration among those already loaded in the image.

Versionner add required project 1

Then, you can specify the repository to use for this project (select a repository already declared in the image, edit one or create a new one).

Versionner add required project 2

Edit groups

To edit groups, use buttons on the top right corner of the list:

  • to add a new group or
  • to remove a group.
Versionner groups toolbar

To add contents to a group, simply drag and drop items (packages, dependent projects) on it.

Versionner groups

Save a configuration

Clicking on Versionner save will save the selected version by updating the current development version. You are in development mode, no need to bloat the configuration with useless versions. You want to keep a version? What you need is to create a release.

Release a version

Clicking on Versionner release will create a release for your project, i.e. a numbered version with fixed packages version, that will be usable by others. The release is done from the current development version.

Commit the project

Clicking on Versionner commit will open the Kommiter tool. Kommiter will display the list of changes ONLY for your project, i.e. your project configuration and your project packages (as described in the latest version). Other changes will not be displayed. You will be able to cherry pick changes and to commit them to their repositories.

Other actions

You also have some operations available from the contextual menu

  • on the projects list
Versionner projects menu
  • on the versions list
Versionner versions menu