##// END OF EJS Templates
remember_version() only writes version if called in a Mercurial repository....
Thomas Arendsen Hein -
r425:719663b7 default
parent child Browse files
Show More
@@ -1,62 +1,65 b''
1 # Copyright (C) 2005 by Intevation GmbH
1 # Copyright (C) 2005 by Intevation GmbH
2 # Author(s):
2 # Author(s):
3 # Thomas Arendsen Hein <thomas@intevation.de>
3 # Thomas Arendsen Hein <thomas@intevation.de>
4 #
4 #
5 # This program is free software under the GNU GPL (>=v2)
5 # This program is free software under the GNU GPL (>=v2)
6 # Read the file COPYING coming with the software for details.
6 # Read the file COPYING coming with the software for details.
7
7
8 """
8 """
9 Mercurial version
9 Mercurial version
10 """
10 """
11
11
12 import os
12 import os
13 import os.path
13 import os.path
14 import re
14 import re
15 import time
15 import time
16
16
17 unknown_version = 'unknown'
17 unknown_version = 'unknown'
18 remembered_version = False
18
19
19 def get_version():
20 def get_version():
20 """Return version information if available."""
21 """Return version information if available."""
21 try:
22 try:
22 from mercurial.__version__ import version
23 from mercurial.__version__ import version
23 except ImportError:
24 except ImportError:
24 version = unknown_version
25 version = unknown_version
25 return version
26 return version
26
27
27 def write_version(version):
28 def write_version(version):
28 """Overwrite version file."""
29 """Overwrite version file."""
29 filename = os.path.join(os.path.dirname(__file__), '__version__.py')
30 filename = os.path.join(os.path.dirname(__file__), '__version__.py')
30 f = open(filename, 'w')
31 f = open(filename, 'w')
31 f.write("# This file is auto-generated.\n")
32 f.write("# This file is auto-generated.\n")
32 f.write("version = %r\n" % version)
33 f.write("version = %r\n" % version)
33 f.close()
34 f.close()
34
35
35 def remember_version():
36 def remember_version():
36 """Store version information."""
37 """Store version information."""
37 f = os.popen("hg identify 2>/dev/null") # use real hg installation
38 global remembered_version
38 ident = f.read()[:-1]
39 if os.access(".hg", os.F_OK):
39 if not f.close() and ident:
40 f = os.popen("hg identify 2>/dev/null") # use real hg installation
40 ids = ident.split(' ', 1)
41 ident = f.read()[:-1]
41 version = ids.pop(0)
42 if not f.close() and ident:
42 if version[-1] == '+':
43 ids = ident.split(' ', 1)
43 version = version[:-1]
44 version = ids.pop(0)
44 modified = True
45 if version[-1] == '+':
45 else:
46 version = version[:-1]
46 modified = False
47 modified = True
47 if version.isalnum() and ids:
48 else:
48 for tag in ids[0].split('/'):
49 modified = False
49 # is a tag is suitable as a version number?
50 if version.isalnum() and ids:
50 if re.match(r'^(\d+\.)+[\w.-]+$', tag):
51 for tag in ids[0].split('/'):
51 version = tag
52 # is a tag is suitable as a version number?
52 break
53 if re.match(r'^(\d+\.)+[\w.-]+$', tag):
53 if modified:
54 version = tag
54 version += time.strftime('+%Y%m%d')
55 break
55 else:
56 if modified:
56 version = unknown_version
57 version += time.strftime('+%Y%m%d')
57 write_version(version)
58 remembered_version = True
59 write_version(version)
58
60
59 def forget_version():
61 def forget_version():
60 """Remove version information."""
62 """Remove version information."""
61 write_version(unknown_version)
63 if remembered_version:
64 write_version(unknown_version)
62
65
General Comments 0
You need to be logged in to leave comments. Login now