There is three kind of internal number for SCM:
- file-centric id (version 1, version 2, ...) for SCM managing their elements on at file to file basic (ClearCase), based on a simple 0-based increment
- a repository-centric id: it established an ID (Subversion revision number) for referencing all files (again, simple increment)
- a commit-centric id (for instance, SHA1 for Git, meaning based on the content) for DAG-based SCM (Directed Acyclic Graph) where the history of a file is linked to the one of a directory linked to a commit.
It is based on :
- an internal base for central SCM, or on
- a computed unique key or hash for distributed SCM
The combination of the two criteria gives you the final id.
An internal version number should no be mistaken for an application version number (like major.minor.build)