Changed the code reading a GIT submodules file because Python2 config parser cannot handle option = value lines starting with whitespace.

Sun, 21 Jan 2018 16:55:14 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 21 Jan 2018 16:55:14 +0100
changeset 6078
bbdc284c1bfc
parent 6077
a7673d735aab
child 6079
1a6e142fb181

Changed the code reading a GIT submodules file because Python2 config parser cannot handle option = value lines starting with whitespace.

Plugins/VcsPlugins/vcsGit/git.py file | annotate | diff | comparison | revisions
--- a/Plugins/VcsPlugins/vcsGit/git.py	Sun Jan 21 15:14:36 2018 +0100
+++ b/Plugins/VcsPlugins/vcsGit/git.py	Sun Jan 21 16:55:14 2018 +0100
@@ -23,8 +23,6 @@
 from E5Gui.E5Application import e5App
 from E5Gui import E5MessageBox, E5FileDialog
 
-from Globals.E5ConfigParser import E5ConfigParser
-
 from QScintilla.MiniEditor import MiniEditor
 
 from VCS.VersionControl import VersionControl
@@ -3774,23 +3772,33 @@
         if not os.path.exists(submodulesFile):
             return []
         
-        configParser = E5ConfigParser()
-        if configParser.read(submodulesFile):
-            submodules = []
-            for submodule in configParser:
-                if submodule.startswith("submodule"):
-                    submoduleDict = {"name": submodule.split(None, 1)[1][1:-1]}
-                    section = configParser[submodule]
-                    submoduleDict["path"] = section["path"]
-                    submoduleDict["url"] = section["url"]
-                    if "branch" in section:
-                        submoduleDict["branch"] = section["branch"]
-                    else:
+        try:
+            modulesFile = open(submodulesFile, "r")
+            contents = modulesFile.readlines()
+            modulesFile.close()
+        except OSError:
+            # silently ignore them
+            return []
+        
+        submodules = []
+        submoduleDict = None
+        for line in contents:
+            line = line.strip()
+            if line.startswith("[submodule"):
+                if submoduleDict:
+                    if "branch" not in submoduleDict:
                         submoduleDict["branch"] = ""
                     submodules.append(submoduleDict)
-            return submodules
-        
-        return []
+                submoduleDict = {"name": line.split(None, 1)[1][1:-2]}
+            elif "=" in line:
+                option, value = line.split("=", 1)
+                submoduleDict[option.strip()] = value.strip()
+        if submoduleDict:
+            if "branch" not in submoduleDict:
+                submoduleDict["branch"] = ""
+            submodules.append(submoduleDict)
+        
+        return submodules
     
     def gitSubmoduleList(self, projectDir):
         """

eric ide

mercurial