From Charm documentation it says: revision is now deprecated. How charm writer maintain version information?
For charms, published in the official charm store (https://jujucharms.com/), the revision number is chosen by the charm store when the charm is published (for the first time or when a new version is released). The charm store always picks an unique revision for each charm, and the contents of the "revision" file does not matter. When deploying charms from a local repository (local charms), the revision file is honored by Juju, if possible. There can only be one charm with a given name and revision number in any Juju environment (i.e. inside the mongo state database). When deploying a local charm, Juju tries to respect the revision inside the charm, but if this won't be possible (i.e. when there already is a charm in the state DB with the same name and revision), the latest known revision is incremented and stored. The user is notified of the actual revision the charm was deployed with:
So, going back to the question: a charm author is expected to keep their charm sources into a version control system somewhere, like on launchpad, bitbucket, github, etc. This is the proper way to maintain version information and keep all the history. The revision file inside the charm source does not guarantee uniqueness and does not provide a solid way to refer to a specific charm version (inside a single environment or across multiple environments using the same charm).