Submitter | Siddharth Agarwal |
---|---|
Date | Dec. 12, 2014, 11:48 p.m. |
Message ID | <15fbfdb7acc083cb76da.1418428100@devbig136.prn2.facebook.com> |
Download | mbox | patch |
Permalink | /patch/7069/ |
State | Superseded |
Headers | show |
Comments
On 12/12/2014 03:48 PM, Siddharth Agarwal wrote: > # HG changeset patch > # User Siddharth Agarwal <sid0@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@selenic.com > http://selenic.com/mailman/listinfo/mercurial-devel
Patch
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] + 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'):