##// 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."""
38 global remembered_version
39 if os.access(".hg", os.F_OK):
37 f = os.popen("hg identify 2>/dev/null") # use real hg installation
40 f = os.popen("hg identify 2>/dev/null") # use real hg installation
38 ident = f.read()[:-1]
41 ident = f.read()[:-1]
39 if not f.close() and ident:
42 if not f.close() and ident:
40 ids = ident.split(' ', 1)
43 ids = ident.split(' ', 1)
41 version = ids.pop(0)
44 version = ids.pop(0)
42 if version[-1] == '+':
45 if version[-1] == '+':
43 version = version[:-1]
46 version = version[:-1]
44 modified = True
47 modified = True
45 else:
48 else:
46 modified = False
49 modified = False
47 if version.isalnum() and ids:
50 if version.isalnum() and ids:
48 for tag in ids[0].split('/'):
51 for tag in ids[0].split('/'):
49 # is a tag is suitable as a version number?
52 # is a tag is suitable as a version number?
50 if re.match(r'^(\d+\.)+[\w.-]+$', tag):
53 if re.match(r'^(\d+\.)+[\w.-]+$', tag):
51 version = tag
54 version = tag
52 break
55 break
53 if modified:
56 if modified:
54 version += time.strftime('+%Y%m%d')
57 version += time.strftime('+%Y%m%d')
55 else:
58 remembered_version = True
56 version = unknown_version
57 write_version(version)
59 write_version(version)
58
60
59 def forget_version():
61 def forget_version():
60 """Remove version information."""
62 """Remove version information."""
63 if remembered_version:
61 write_version(unknown_version)
64 write_version(unknown_version)
62
65
General Comments 0
You need to be logged in to leave comments. Login now