Commits

Yuya Nishihara committed aa55a10

manifestmodel: extract helper to make tree nodes for the specified path

Comments (0)

Files changed (1)

tortoisehg/hgqt/manifestmodel.py

             reverse=reverse)
 
 
+def _maketree(e, path):
+    for p in path.split('/'):
+        if p not in e:
+            e.addchild(p)
+        e = e[p]
+    return e
+
 def _populaterepo(roote, repo, statusfilter, namefilter):
 
     def pathinstatus(path, status, uncleanpaths):
             origpath = path
             path = repo.removeStandin(path)
 
-            e = treeroot
-            for p in hglib.tounicode(path).split('/'):
-                if not p in e:
-                    e.addchild(p)
-                e = e[p]
-
+            e = _maketree(treeroot, hglib.tounicode(path))
             for st, filesofst in status.iteritems():
                 if origpath in filesofst:
                     e.status = st
         for path, substate in ctx.substate.iteritems():
             if not 'S' in statusfilter:
                 break
-            e = roote
-            pathelements = hglib.tounicode(path).split('/')
-            for p in pathelements[:-1]:
-                if not p in e:
-                    e.addchild(p)
-                e = e[p]
-
-            p = pathelements[-1]
-            if not p in e:
-                e.addchild(p)
-            e = e[p]
+            e = _maketree(roote, hglib.tounicode(path))
             e.status = 'S'
             e.subkind = substate[2]
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.