diff mercurial/version.py @ 423:25afb21d97ba

Support for 'hg --version'. setup.py stores version from hg repository. -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Support for 'hg --version'. setup.py stores version from hg repository. manifest hash: c69058298ea12035f2cf356f987ba2fb5ff4bbae -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (GNU/Linux) iD8DBQFCtD6ZW7P1GVgWeRoRAnGHAKCLscthht2UlBEMDmxL9cku4PlcswCffOVo wTOhYkW4Ie5+8bdmL8EqsvY= =uGpn -----END PGP SIGNATURE-----
author Thomas Arendsen Hein <thomas@intevation.de>
date Sat, 18 Jun 2005 16:32:41 +0100
parents
children 719663b7f235
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/version.py	Sat Jun 18 16:32:41 2005 +0100
@@ -0,0 +1,62 @@
+# Copyright (C) 2005 by Intevation GmbH
+# 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
+
+unknown_version = 'unknown'
+
+def get_version():
+    """Return version information if available."""
+    try:
+        from mercurial.__version__ import version
+    except ImportError:
+        version = unknown_version
+    return version
+
+def write_version(version):
+    """Overwrite version file."""
+    filename = os.path.join(os.path.dirname(__file__), '__version__.py')
+    f = open(filename, 'w')
+    f.write("# This file is auto-generated.\n")
+    f.write("version = %r\n" % version)
+    f.close()
+
+def remember_version():
+    """Store version information."""
+    f = os.popen("hg identify 2>/dev/null")  # use real hg installation
+    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')
+    else:
+        version = unknown_version
+    write_version(version)
+
+def forget_version():
+    """Remove version information."""
+    write_version(unknown_version)
+