All pastes #175661 Raw Edit

Anonymous

public text v1 · immutable
·published 2006-09-19 00:20 UTC
rendered paste body
[pucca:trunk/Combinator/combinator] wsanchez% svn diff
Index: branchmgr.py
===================================================================
--- branchmgr.py        (revision 9028)
+++ branchmgr.py        (working copy)
@@ -58,6 +58,19 @@
     # not.  this module really can't use *anything* outside the stdlib, because one
     # of its primary purposes is managing the path of your Twisted install!!
 
+def childWithName(element, name):
+    for child in element.childNodes:
+        if child.localName == name:
+            return child
+    return None
+
+def getText(element):
+    text = []
+    for child in element.childNodes:
+        assert child.nodeType == child.TEXT_NODE
+        text.append(child.data)
+    return "".join(text)
+
 def addSiteDir(fsPath):
     if fsPath not in sys.path:
         sys.path.insert(0, fsPath)
@@ -256,16 +269,19 @@
         trunkDirectory = self.projectBranchDir(projectName)
         if not os.path.exists(trunkDirectory):
             raise IOError("Trunk not found for project %r" % (projectName,))
-        doc = parse(file(os.path.join(trunkDirectory, '.svn', 'entries')))
-        for entry in doc.documentElement.childNodes:
-            if hasattr(entry, 'hasAttribute'):
-                if entry.hasAttribute('url'):
-                    uri = '/'.join(entry.getAttribute('url').split('/')[:-1])
-                    if branchRelativePath == 'trunk':
-                        branchURI = uri + '/trunk'
-                    else:
-                        branchURI = '/'.join([uri, 'branches', branchRelativePath])
-                    return branchURI
+        os.chdir(trunkDirectory)
+        doc = parse(os.popen("svn info --xml"))
+        info = doc.documentElement
+        assert info.localName == "info", "root element is not <info>"
+        entry = childWithName(info, "entry")
+        url = childWithName(entry, "url")
+        uri = getText(url).encode("utf-8")
+        uri = "/".join(uri.split('/')[:-1])
+        if branchRelativePath == 'trunk':
+            branchURI = uri + '/trunk'
+        else:
+            branchURI = '/'.join([uri, 'branches', branchRelativePath])
+        return branchURI
 
 theBranchManager = None