Hello,

My opinion on the matter of system generated versions is quite black and white.

- Versions are not the same thing as revisions.

A known problem with using auto-inserted values of different formats is that it makes it hard to migrate your code from one SCM to another. I have tried this with CVS and SVN previously. What other surprises exist in a SVN/GIT integration I have no idea.

Revisiting Jonathans original list:

1) Don't bother putting $VERSION anywhere except the main module
2) Put a different $VERSION in each module, depending on when that module itself changes 3) Put the same $VERSION in each module, matching the distribution and the main module

I am a 2'er myself. I handle all version numbers manually, I use version numbers for indicating changes, so POD changes and minor bug fixes, might go unnoticed a part from a mention in the Changes file. Where all major changes are reflected in the version number of a package.

For sub-packages in distributions I use the same policy. I have often experienced the a package is lifted out of a distribution, so become a distribution of it's own, so the version follows the unique identification of a package. Since the package whether distributed on it's own or as part of a larger distribution is a unique component, is locatable in @INC.

As for a package renaming I would reset the version to be an initial release, I guess.

I learned one lesson based on feedback from a user and that was that the distribution number should be reflected in the main package identified by the build file an example from Workflow:

    dist_name         => 'Workflow',
    dist_version_from => 'lib/Workflow.pm',

The distribution started out having a version number only defined in Build.PL, so tracking what distribution was installed based on evaluation of Workflow.pm was somewhat hard.

For version numbers I like the 3 part version numbering, but that is just a matter of taste, the important thing is that version numbers are sequential.

Just my 5 cents,

jonasbn

On 13/09/2009, at 02.39, Dana Hudes wrote:

If you are working with a perfile VCS such as sccs, rcs, cvs or svn then each file has it's own revision # and rightly so because that's how the author is managing code

OTOH if one uses Mecurial then a commit of a changeset has a # and its the changeset you track so you use that #. This still leads to different files with different #s but that's ok since you have all the same #s for a change set

Sent from my BlackBerry® smartphone with Nextel Direct Connect

Reply via email to