Skip to content

Commit 5d577ac

Browse files
committed
revise version scripts to deal with v in version tags
1 parent cc61d3f commit 5d577ac

File tree

3 files changed

+39
-49
lines changed

3 files changed

+39
-49
lines changed

GSASII/install/incr-mini-version.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
# print('Not on master branch')
2828
# sys.exit()
2929
if g2repo.head.is_detached:
30-
print(f'Detached head {commit0[:6]!r}')
30+
print(f'Detached head {commit0[:7]!r}')
3131
sys.exit()
3232
# make a list of tags without a dash; get the largest numeric tag
3333
# someday use the packaging module (but no more dependencies for now)
@@ -42,18 +42,18 @@
4242
sys.exit()
4343

4444
# get the latest version number
45-
releases = [i for i in g2repo.tags if '.' in i.name]
46-
majors = [i.name.split('.')[0] for i in releases]
45+
releases = [i for i in g2repo.tags if '.' in i.name and i.name.startswith('v')]
46+
majors = [i.name.split('.')[0][1:] for i in releases]
4747
major = max([int(i) for i in majors if i.isdecimal()])
48-
minors = [i.name.split('.')[1] for i in releases if i.name.startswith(f'{major}.')]
48+
minors = [i.name.split('.')[1] for i in releases if i.name.startswith(f'v{major}.')]
4949
minor = max([int(i) for i in minors if i.isdecimal()])
50-
minis = [i.name.split('.',2)[2] for i in releases if i.name.startswith(f'{major}.{minor}')]
50+
minis = [i.name.split('.',2)[2] for i in releases if i.name.startswith(f'v{major}.{minor}')]
5151
# mini can be integer, float or even have letters (5.2.1.1rc1)
5252
# for now, ignore anything with letters or decimals
5353
mini = max([int(i) for i in minis if i.isdecimal()])
5454
#latest = f'{major}.{minor}.{mini}'
55-
nextmini = f'{major}.{minor}.{mini+1}'
56-
#nextminor = f'{major}.{minor+1}.0'
55+
nextmini = f'v{major}.{minor}.{mini+1}'
56+
#nextminor = f'v{major}.{minor+1}.0'
5757
versiontag = nextmini
5858
if versiontag in releases:
5959
print(f'Versioning problem, generated next version {versiontag} already defined!')
@@ -94,4 +94,4 @@
9494
fp.write(f'git_versiontag = {versiontag!r}\n')
9595
#
9696
fp.close()
97-
print(f'Created git version file {pyfile} at {now} for {commit0[:6]!r}')
97+
print(f'Created git version file {pyfile} at {now} for {commit0[:7]!r}')

GSASII/install/save-versions.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,17 +67,17 @@
6767
else:
6868
fp.write(f'git_prevtags = []\n')
6969
# get the latest version number
70-
releases = [i for i in g2repo.tags if '.' in i.name]
70+
releases = [i for i in g2repo.tags if '.' in i.name and i.name.startswith('v')]
7171
if releases:
72-
majors = [i.name.split('.')[0] for i in releases]
72+
majors = [i.name.split('.')[0][1:] for i in releases]
7373
major = max([int(i) for i in majors if i.isdecimal()])
74-
minors = [i.name.split('.')[1] for i in releases if i.name.startswith(f'{major}.')]
74+
minors = [i.name.split('.')[1] for i in releases if i.name.startswith(f'v{major}.')]
7575
minor = max([int(i) for i in minors if i.isdecimal()])
76-
minis = [i.name.split('.',2)[2] for i in releases if i.name.startswith(f'{major}.{minor}')]
76+
minis = [i.name.split('.',2)[2] for i in releases if i.name.startswith(f'v{major}.{minor}')]
7777
# mini can be integer, float or even have letters (5.2.1.1rc1)
7878
# for now, ignore anything with letters or decimals
7979
mini = max([int(i) for i in minis if i.isdecimal()])
80-
versiontag = f'{major}.{minor}.{mini}'
80+
versiontag = f'v{major}.{minor}.{mini}'
8181
else:
8282
versiontag = '?'
8383
fp.write(f'git_versiontag = {versiontag!r}\n')

GSASII/install/tag-version.py

Lines changed: 26 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -33,60 +33,50 @@
3333
if __name__ == '__main__':
3434

3535
g2repo = git.Repo(path2repo)
36-
if g2repo.active_branch.name != 'master':
37-
print('Not on master branch')
38-
sys.exit()
36+
# if g2repo.active_branch.name != 'master':
37+
# print('Not on master branch')
38+
# sys.exit()
3939
if g2repo.head.is_detached:
40-
print(f'Detached head {commit0[:6]!r}')
40+
print(f'Detached head {commit0[:7]!r}')
4141
sys.exit()
4242
# make a list of tags without a dash; get the largest numeric tag
4343
# someday use the packaging module (but no more dependencies for now)
4444
numtag = [i for i in g2repo.tags if '-' not in i.name]
4545
max_numeric = max([int(i.name) for i in numtag if i.name.isdecimal()])
4646
# get the latest version number
47-
releases = [i for i in g2repo.tags if '.' in i.name]
48-
majors = [i.name.split('.')[0] for i in releases]
47+
releases = [i for i in g2repo.tags if '.' in i.name and i.name.startswith('v')]
48+
majors = [i.name.split('.')[0][1:] for i in releases]
4949
major = max([int(i) for i in majors if i.isdecimal()])
50-
minors = [i.name.split('.')[1] for i in releases if i.name.startswith(f'{major}.')]
50+
minors = [i.name.split('.')[1] for i in releases if i.name.startswith(f'v{major}.')]
5151
minor = max([int(i) for i in minors if i.isdecimal()])
52-
minis = [i.name.split('.',2)[2] for i in releases if i.name.startswith(f'{major}.{minor}')]
52+
minis = [i.name.split('.',2)[2] for i in releases if i.name.startswith(f'v{major}.{minor}')]
5353
# mini can be integer, float or even have letters (5.2.1.1rc1)
5454
# for now, ignore anything with letters or decimals
5555
mini = max([int(i) for i in minis if i.isdecimal()])
5656
latest = f'{major}.{minor}.{mini}'
57-
#nextmini = f'{major}.{minor}.{mini+1}'
58-
nextminor = f'{major}.{minor+1}.0'
57+
#nextmini = f'v{major}.{minor}.{mini+1}'
58+
nextminor = f'v{major}.{minor+1}.0'
5959
versiontag = nextminor
6060
if versiontag in releases:
6161
print(f'Versioning problem, generated next version {versiontag} already defined!')
6262
versiontag = '?'
6363

64-
# scan for the newest untagged commits, stopping at the first
65-
# tagged one
66-
untagged = []
67-
for i,c in enumerate(g2repo.iter_commits('HEAD')):
68-
if i > 500:
69-
print('No tag found in 500 commits!')
70-
#break
71-
sys.exit()
72-
tags = g2repo.git.tag('--points-at',c).split('\n')
73-
if tags == ['']:
74-
untagged.append(c)
75-
else:
76-
break
77-
# add a tag to the newest untagged version
78-
tagnum = max_numeric
79-
for i in sorted(untagged,key=lambda k:k.committed_datetime,reverse=True):
64+
# is the newest commit tagged?
65+
c = g2repo.head.commit
66+
tags = g2repo.git.tag('--points-at',c).split('\n')
67+
if tags != ['']:
68+
print(f'Latest commit ({c.hexsha[:7]}) is already tagged ({tags}).')
69+
sys.exit()
70+
# add a tag to the newest commit
71+
tagnum = max_numeric + 1
72+
while str(tagnum) in g2repo.tags:
73+
print(f'Error: {tagnum} would be repeated')
8074
tagnum += 1
81-
if str(tagnum) in g2repo.tags:
82-
print(f'Error: {tagnum} would be repeated')
83-
break
84-
g2repo.create_tag(str(tagnum),ref=i)
85-
print(f'created tag {tagnum} for {i.hexsha[:7]}')
86-
if versiontag != '?':
87-
g2repo.create_tag(str(versiontag),ref=i)
88-
print(f'created version # {versiontag} for {i.hexsha[:7]}')
89-
break
75+
g2repo.create_tag(str(tagnum),ref=c)
76+
print(f'created tag {tagnum} for {c.hexsha[:7]}')
77+
if versiontag != '?':
78+
g2repo.create_tag(str(versiontag),ref=c)
79+
print(f'created version # {versiontag} for {c.hexsha[:7]}')
9080

9181
# create a file with GSAS-II version information
9282
try:
@@ -130,7 +120,7 @@
130120
fp.close()
131121
print(f'Created git version file {pyfile} at {now} for {commit0[:7]!r}')
132122

133-
print('Now do\n\t git add \n\t git commit \n\t git push \n\t git push --follow-tags (better than git push --tags?)')
123+
print('Now do:\n\t git add \n\t git commit \n\t git push \n\t git push --tags (better than git push --follow-tags?)')
134124

135125
# Git 2.4 has added the push.followTags option to turn that flag on by default which you can set with:
136126
#

0 commit comments

Comments
 (0)