diff mercurial/version.py @ 429:688d03d6997a

Pull from TAH -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Pull from TAH manifest hash: 600d04efbd836d555d11a3bd9d821d1d8c0a9790 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCuPFxywK+sNU5EO8RAjfzAKC18Zc2EOkXhy1zcpgGnyPHnFMdmgCfW5Ut I5HSWqZMt8H0WJx1Or7ajNc= =27D5 -----END PGP SIGNATURE-----
author mpm@selenic.com
date Tue, 21 Jun 2005 21:04:49 -0800
parents 36e644d28edf
children 9ae0034f2772 50da4bb9cab6
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/version.py	Tue Jun 21 21:04:49 2005 -0800
@@ -0,0 +1,66 @@
+# 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'
+remembered_version = False
+
+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(version=None):
+    """Store version information."""
+    global remembered_version
+    if not version and os.path.isdir(".hg"):
+        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')
+    if version:
+        remembered_version = True
+        write_version(version)
+
+def forget_version():
+    """Remove version information."""
+    if remembered_version:
+        write_version(unknown_version)
+