##// END OF EJS Templates
Simplify/correct finding the hg executable (fixes issue644)...
Simplify/correct finding the hg executable (fixes issue644) Simply use find_exe('hg') as the default value for $HG and require to manually set it if you have special requirements. While the default will not always be 100% correct (i.e. the identical hg version) for many users it is and for the others the hg executable found in the PATH should do most things correctly. Developers or other users with multiple installs can set $HG or run something like util.set_hgexecutable in their shell or python scripts. Additionally util.hgexecutable() is now available so extensions can access the value with a public interface, too.

File last commit:

r4066:cff3e4b4 default
r5062:3d35c8cb default
Show More
version.py
79 lines | 2.3 KiB | text/x-python | PythonLexer
Vadim Gelfer
update copyrights.
r2859 # Copyright (C) 2005, 2006 by Intevation GmbH
Thomas Arendsen Hein
Support for 'hg --version'. setup.py stores version from hg repository....
r423 # Author(s):
# Thomas Arendsen Hein <thomas@intevation.de>
#
# This program is free software under the GNU GPL (>=v2)
# Read the file COPYING coming with the software for details.
"""
Mercurial version
"""
import os
import os.path
import re
import time
mpm@selenic.com
[PATCH] /dev/null for other OS...
r461 import util
Thomas Arendsen Hein
Support for 'hg --version'. setup.py stores version from hg repository....
r423
unknown_version = 'unknown'
Thomas Arendsen Hein
remember_version() only writes version if called in a Mercurial repository....
r425 remembered_version = False
Thomas Arendsen Hein
Support for 'hg --version'. setup.py stores version from hg repository....
r423
Alexis S. L. Carvalho
setup.py: reload __version__.py after writing it....
r4066 def get_version(doreload=False):
Thomas Arendsen Hein
Support for 'hg --version'. setup.py stores version from hg repository....
r423 """Return version information if available."""
try:
Alexis S. L. Carvalho
setup.py: reload __version__.py after writing it....
r4066 import mercurial.__version__
if doreload:
reload(mercurial.__version__)
version = mercurial.__version__.version
Thomas Arendsen Hein
Support for 'hg --version'. setup.py stores version from hg repository....
r423 except ImportError:
version = unknown_version
return version
def write_version(version):
"""Overwrite version file."""
Thomas Arendsen Hein
Don't forget version at the end of setup.py, write it only if changed....
r1977 if version == get_version():
return
directory = os.path.dirname(__file__)
for suffix in ['py', 'pyc', 'pyo']:
try:
os.unlink(os.path.join(directory, '__version__.%s' % suffix))
except OSError:
pass
f = open(os.path.join(directory, '__version__.py'), 'w')
Thomas Arendsen Hein
Support for 'hg --version'. setup.py stores version from hg repository....
r423 f.write("# This file is auto-generated.\n")
f.write("version = %r\n" % version)
f.close()
Alexis S. L. Carvalho
setup.py: reload __version__.py after writing it....
r4066 # reload the file we've just written
get_version(True)
Thomas Arendsen Hein
Support for 'hg --version'. setup.py stores version from hg repository....
r423
Thomas Arendsen Hein
Make it possible to specify a version number in setup.py....
r427 def remember_version(version=None):
Thomas Arendsen Hein
Support for 'hg --version'. setup.py stores version from hg repository....
r423 """Store version information."""
Thomas Arendsen Hein
remember_version() only writes version if called in a Mercurial repository....
r425 global remembered_version
Thomas Arendsen Hein
Make it possible to specify a version number in setup.py....
r427 if not version and os.path.isdir(".hg"):
mpm@selenic.com
[PATCH] /dev/null for other OS...
r461 f = os.popen("hg identify 2> %s" % util.nulldev) # use real hg installation
Thomas Arendsen Hein
remember_version() only writes version if called in a Mercurial repository....
r425 ident = f.read()[:-1]
if not f.close() and ident:
ids = ident.split(' ', 1)
version = ids.pop(0)
if version[-1] == '+':
version = version[:-1]
modified = True
else:
modified = False
if version.isalnum() and ids:
for tag in ids[0].split('/'):
# is a tag is suitable as a version number?
if re.match(r'^(\d+\.)+[\w.-]+$', tag):
version = tag
break
if modified:
version += time.strftime('+%Y%m%d')
Thomas Arendsen Hein
Make it possible to specify a version number in setup.py....
r427 if version:
remembered_version = True
write_version(version)
Thomas Arendsen Hein
Support for 'hg --version'. setup.py stores version from hg repository....
r423
def forget_version():
"""Remove version information."""
Thomas Arendsen Hein
remember_version() only writes version if called in a Mercurial repository....
r425 if remembered_version:
write_version(unknown_version)
Thomas Arendsen Hein
Support for 'hg --version'. setup.py stores version from hg repository....
r423