[Zope3-checkins] SVN: Zope3/trunk/ ZopeVersion now know about Subversion

Dmitry Vasiliev dima at hlabs.spb.ru
Thu Jun 10 03:45:41 EDT 2004


Log message for revision 25322:
ZopeVersion now know about Subversion



-=-
Modified: Zope3/trunk/doc/CHANGES.txt
===================================================================
--- Zope3/trunk/doc/CHANGES.txt	2004-06-09 23:01:05 UTC (rev 25321)
+++ Zope3/trunk/doc/CHANGES.txt	2004-06-10 07:45:41 UTC (rev 25322)
@@ -18,8 +18,24 @@
       - utilities/runurl.py hadn't been updated to relect recent
         changes in the debugging support.
 
+      - Views for I18nFile/I18nImage now use contentType attribute instead
+        of outdated getContentType method.
+
+      - ZopeVersion now know about Subversion.
+
     Restructuring
 
+    Much thanks to everyone who contributed to this release:
+
+      Jim Fulton, Marius Gedminas, Fred Drake, Philipp von Weitershausen,
+      Stephan Richter, Dmitry Vasiliev, Scott Pascoe, Bjorn Tillenius,
+      Eckart Hertzler, Roger Ineichen, Stuart Bishop
+
+      Note: If you are not listed and contributed, please add yourself. This
+      note will be deleted before the release.
+
+  ------------------------------------------------------------------
+
   Zope X3.0.0 Beta 1
 
     New features
@@ -106,9 +122,6 @@
       Stephan Richter, Dmitry Vasiliev, Scott Pascoe, Bjorn Tillenius,
       Eckart Hertzler, Roger Ineichen, Stuart Bishop
 
-      Note: If you are not listed and contributed, please add yourself. This
-      note will be deleted before the release.
-
   ------------------------------------------------------------------
 
   Zope X3.0.0 Alpha 2

Modified: Zope3/trunk/src/zope/app/applicationcontrol/tests/test_zopeversion.py
===================================================================
--- Zope3/trunk/src/zope/app/applicationcontrol/tests/test_zopeversion.py	2004-06-09 23:01:05 UTC (rev 25321)
+++ Zope3/trunk/src/zope/app/applicationcontrol/tests/test_zopeversion.py	2004-06-10 07:45:41 UTC (rev 25322)
@@ -40,8 +40,8 @@
                 f.write("\n")
             f.close()
         if tag:
-            os.mkdir(os.path.join(self.tmpdir, "CVS"))
-            f = open(os.path.join(self.tmpdir, "CVS", "Tag"), "w")
+            os.mkdir(os.path.join(self.tmpdir, ".svn"))
+            f = open(os.path.join(self.tmpdir, ".svn", "entries"), "w")
             f.write(tag)
             if not tag.endswith("\n"):
                 f.write("\n")
@@ -53,65 +53,68 @@
     def test_IVerify(self):
         verifyObject(IZopeVersion, self._Test__new())
 
-    # CVS/Tag lines can start with different characters, each of which
-    # has some meaning:
-    #   D - checked out with a date; format is YYYY.MM.DD.HH.MM.SS
-    #       where HH.MM.SS indicates timezone (04.00.00 is GMT - 4 hours)
-    #   N - checked out with a non-branch tag; format is Ntagname
-    #   T - checked out with a branch tag; format is Ttagname
+    # In .svn/entries we check only two attributes:
+    #   'url' - repository path
+    #   'revision' - checked out revision number
 
     def test_ZopeVersion(self):
         self.prepare(None, None)
         zope_version = self._Test__new()
         self.assertEqual(zope_version.getZopeVersion(), "Development/Unknown")
 
-    def test_ZopeVersion_cvsdate(self):
-        self.prepare(None, "D2004.04.30.04.00.00")
+    def test_ZopeVersion_svntrunk(self):
+        self.prepare(None, """
+                url="svn+ssh://svn.zope.org/repos/main/Zope3/trunk/src/zope"
+                revision="10000"
+                """)
         zope_version = self._Test__new()
         self.assertEqual(zope_version.getZopeVersion(),
-                         "Development/Unknown (2004.04.30.04.00.00)")
+                        "Development/Revision: 10000")
 
-    def test_ZopeVersion_cvstag(self):
-        self.prepare(None, "Nsome-tag")
+    def test_ZopeVersion_svnbranch(self):
+        self.prepare(None, """
+                url="svn+ssh://svn.zope.org/repos/main/Zope3/branches/Zope3-1.0/src/zope"
+                revision="10000"
+                """)
         zope_version = self._Test__new()
         self.assertEqual(zope_version.getZopeVersion(),
-                         "Development/Unknown (some-tag)")
+                        "Development/Revision: 10000/Branch: Zope3-1.0")
 
-    def test_ZopeVersion_cvsbranchtag(self):
-        self.prepare(None, "Tsome-tag")
+    def test_ZopeVersion_svntag(self):
+        self.prepare(None, """
+                url="svn+ssh://svn.zope.org/repos/main/Zope3/tags/Zope3-1.0/src/zope"
+                revision="10000"
+                """)
         zope_version = self._Test__new()
         self.assertEqual(zope_version.getZopeVersion(),
-                         "Development/Unknown (some-tag)")
+                        "Development/Revision: 10000/Tag: Zope3-1.0")
 
-    def test_ZopeVersion_release(self):
-        self.prepare("Zope X3 1.0.1a1", None)
+    def test_ZopeVersion_svn_unknown(self):
+        self.prepare(None, "")
         zope_version = self._Test__new()
-        self.assertEqual(zope_version.getZopeVersion(),
-                         "Zope X3 1.0.1a1")
+        self.assertEqual(zope_version.getZopeVersion(), "Development/Unknown")
 
-    def test_ZopeVersion_release_cvsdate(self):
-        # demonstrate that the version.txt data is discarded if
-        # there's revision-control metadata:
-        self.prepare("Zope X3 1.0.1a1", "D2004.04.30.04.00.00")
+    def test_ZopeVersion_release(self):
+        self.prepare("Zope 3 1.0.0", None)
         zope_version = self._Test__new()
         self.assertEqual(zope_version.getZopeVersion(),
-                         "Development/Unknown (2004.04.30.04.00.00)")
+                         "Zope 3 1.0.0")
 
-    def test_ZopeVersion_release_cvstag(self):
-        # demonstrate that the version.txt data is discarded if
-        # there's revision-control metadata:
-        self.prepare("Zope X3 1.0.1a1", "Nsome-tag")
+    def test_ZopeVersion_release_empty(self):
+        self.prepare(" ", None)
         zope_version = self._Test__new()
-        self.assertEqual(zope_version.getZopeVersion(),
-                         "Development/Unknown (some-tag)")
+        self.assertEqual(zope_version.getZopeVersion(), "Development/Unknown")
 
-    def test_ZopeVersion_release_cvsbranchtag(self):
+    def test_ZopeVersion_release_svntrunk(self):
         # demonstrate that the version.txt data is discarded if
         # there's revision-control metadata:
-        self.prepare("Zope X3 1.0.1a1", "Tsome-tag")
+        self.prepare("Zope 3 1.0.0", """
+                url="svn+ssh://svn.zope.org/repos/main/Zope3/trunk/src/zope"
+                revision="10000"
+                """)
         zope_version = self._Test__new()
         self.assertEqual(zope_version.getZopeVersion(),
-                         "Development/Unknown (some-tag)")
+                        "Development/Revision: 10000")
 
 
 def test_suite():

Modified: Zope3/trunk/src/zope/app/applicationcontrol/zopeversion.py
===================================================================
--- Zope3/trunk/src/zope/app/applicationcontrol/zopeversion.py	2004-06-09 23:01:05 UTC (rev 25321)
+++ Zope3/trunk/src/zope/app/applicationcontrol/zopeversion.py	2004-06-10 07:45:41 UTC (rev 25322)
@@ -16,6 +16,7 @@
 $Id$
 """
 import os
+import re
 
 import zope
 from zope.app.applicationcontrol.interfaces import IZopeVersion
@@ -24,6 +25,9 @@
 class ZopeVersion(object):
     implements(IZopeVersion)
 
+    __entries = re.compile(r'(url|revision)\s*=\s*"([^"]+)"')
+    __tags = re.compile(r'/(tags|branches)/([^/]+)/')
+
     def __init__(self, path=None):
         if path is None:
             path = os.path.dirname(os.path.abspath(zope.__file__))
@@ -35,33 +39,50 @@
         if self.result is not None:
             return self.result
 
-        version_id = "Development/Unknown"
-        version_tag = ""
-        is_cvs = False
+        self.result = "Development/Unknown"
 
-        # is this a CVS checkout?
-        # XXX need to change this when we move to Subversion
-        cvsdir = os.path.join(self.path, "CVS" )
-        if os.path.isdir(cvsdir):
-            is_cvs = True
-            tagfile = os.path.join(cvsdir, "Tag")
+        # is this a SVN checkout?
+        svndir = os.path.join(self.path, ".svn")
+        if os.path.isdir(svndir):
+            self.__setSVNVersion(svndir)
+        else:
+            # try to get official Zope release information
+            versionfile = os.path.join(self.path, "version.txt")
+            if os.path.isfile(versionfile):
+                f = file(versionfile)
+                self.result = f.readline().strip() or self.result
+                f.close()
+        return self.result
 
-            # get the tag information
-            if os.path.isfile(tagfile):
-                f = open(tagfile)
-                tag = f.readline().rstrip()
+    def __setSVNVersion(self, svndir):
+            entriesfile = os.path.join(svndir, "entries")
+
+            # get the version information
+            if os.path.isfile(entriesfile):
+                f = file(entriesfile)
+                url, revision = "", ""
+                for line in f:
+                    match = self.__entries.search(line)
+                    if match is not None:
+                        name, value = match.group(1, 2)
+                        if name == "url":
+                            url = value
+                        elif name == "revision":
+                            revision = value
+                        if url and revision:
+                            break
                 f.close()
-                if tag[:1] in ("D", "N", "T"):
-                    version_tag = " (%s)" % tag[1:]
 
-        # try to get official Zope release information
-        versionfile = os.path.join(self.path, "version.txt")
-        if os.path.isfile(versionfile) and not is_cvs:
-            f = open(versionfile)
-            version_id = f.readline().strip() or version_id
-            f.close()
+                if revision and url:
+                    match = self.__tags.search(url)
+                    tag = ""
+                    if match is not None:
+                        type, value = match.group(1, 2)
+                        if type == "tags":
+                            tag = "/Tag: %s" % value
+                        elif type == "branches":
+                            tag = "/Branch: %s" % value
+                    self.result = "Development/Revision: %s%s" \
+                                  % (revision, tag)
 
-        self.result = "%s%s" % (version_id, version_tag)
-        return self.result
-
 ZopeVersionUtility = ZopeVersion()




More information about the Zope3-Checkins mailing list