[PATCH 3 of 3 RFC] setup: use changes since latest tag instead of just distance

Siddharth Agarwal sid at less-broken.com
Fri Dec 12 18:59:38 CST 2014


On 12/12/2014 03:48 PM, Siddharth Agarwal wrote:
> # HG changeset patch
> # User Siddharth Agarwal <sid0 at fb.com>
> # Date 1418427088 28800
> #      Fri Dec 12 15:31:28 2014 -0800
> # Node ID 15fbfdb7acc083cb76da184d7bfe219a422e2a3b
> # Parent  71df59b4066e7df2b38c81376fb4152c5735e311
> setup: use changes since latest tag instead of just distance
>
> For a Mercurial built on the merge from stable into default right after 3.2.2
> was released -- 19ebd2f88fc7 -- the version number produced was "3.2.2+4". This
> is potentially misleading, since in reality the built Mercurial includes many
> more changes compared to 3.2.2.
>
> Change the versioning scheme so that we take into consideration all the changes
> present in the current revision that aren't present in the latest tag. For
> 19ebd2f88fc7 the new versioning scheme results in a version number of
> "3.2.2+1329". This gives users a much better idea of how many changes have
> actually happened since the latest release.
>
> Since changessincelatesttag is always greater than or equal to the
> latesttagdistance, this will produce version numbers that are always greater
> than or equal to the old scheme. Thus there's minimal compatibility risk.
>
> diff --git a/setup.py b/setup.py
> --- a/setup.py
> +++ b/setup.py
> @@ -196,9 +196,13 @@
>          if hgid.endswith('+'): # propagate the dirty status to the tag
>              version += '+'
>      else: # no tag found
> -        cmd = [sys.executable, 'hg', 'parents', '--template',
> -               '{latesttag}+{latesttagdistance}-']
> -        version = runhg(cmd, env) + hgid
> +        ltagcmd = [sys.executable, 'hg', 'parents', '--template',
> +                   '{latesttag}']
> +        ltag = runhg(ltagcmd, env)
> +        changessincecmd = [sys.executable, 'hg', 'log', '-r',
> +                           "only(.,'%s')" % ltag]

... and I screwed this up. Sending a V2 shortly.

> +        changessince = len(runhg(changessincecmd, env).splitlines())
> +        version = '%s+%s-%s' % (ltag, changessince, hgid)
>      if version.endswith('+'):
>          version += time.strftime('%Y%m%d')
>  elif os.path.exists('.hg_archival.txt'):
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel



More information about the Mercurial-devel mailing list