eric6/Plugins/VcsPlugins/vcsPySvn/SvnRepoBrowserDialog.py

changeset 7774
9eed155411f0
parent 7771
787a6b3f8c9f
child 7780
41420f82c0ac
--- a/eric6/Plugins/VcsPlugins/vcsPySvn/SvnRepoBrowserDialog.py	Sat Oct 10 15:17:29 2020 +0200
+++ b/eric6/Plugins/VcsPlugins/vcsPySvn/SvnRepoBrowserDialog.py	Sat Oct 10 16:03:53 2020 +0200
@@ -10,7 +10,7 @@
 
 import pysvn
 
-from PyQt5.QtCore import QMutexLocker, Qt, pyqtSlot
+from PyQt5.QtCore import Qt, pyqtSlot
 from PyQt5.QtWidgets import (
     QHeaderView, QDialog, QApplication, QDialogButtonBox, QTreeWidgetItem
 )
@@ -18,6 +18,8 @@
 from E5Gui import E5MessageBox
 from E5Gui.E5OverrideCursor import E5OverrideCursor
 
+from E5Utilities.E5MutexLocker import E5MutexLocker
+
 from .SvnUtilities import formatTime
 from .SvnDialogMixin import SvnDialogMixin
 
@@ -154,58 +156,55 @@
             parent = self.repoTree
         
         with E5OverrideCursor():
-            locker = QMutexLocker(self.vcs.vcsExecutionMutex)
             try:
-                try:
+                with E5MutexLocker(self.vcs.vcsExecutionMutex):
                     entries = self.client.list(url, recurse=False)
-                    firstTime = parent == self.repoTree
-                    for dirent, _lock in entries:
-                        if (
-                            (firstTime and dirent["path"] != url) or
-                            (parent != self.repoTree and dirent["path"] == url)
-                        ):
-                            continue
-                        if firstTime:
-                            if dirent["repos_path"] != "/":
-                                repoUrl = dirent["path"].replace(
-                                    dirent["repos_path"], "")
-                            else:
-                                repoUrl = dirent["path"]
-                            if repoUrl != url:
-                                self.__ignoreExpand = True
-                                itm = self.__generateItem(
-                                    parent, "/", "", "", 0, "",
-                                    pysvn.node_kind.dir, repoUrl)
-                                itm.setExpanded(True)
-                                parent = itm
-                                urlPart = repoUrl
-                                for element in (
-                                    dirent["repos_path"].split("/")[:-1]
-                                ):
-                                    if element:
-                                        urlPart = "{0}/{1}".format(urlPart,
-                                                                   element)
-                                        itm = self.__generateItem(
-                                            parent, element, "", "", 0, "",
-                                            pysvn.node_kind.dir, urlPart)
-                                        itm.setExpanded(True)
-                                        parent = itm
-                                self.__ignoreExpand = False
-                        itm = self.__generateItem(
-                            parent, dirent["repos_path"],
-                            dirent["created_rev"], dirent["last_author"],
-                            dirent["size"], dirent["time"], dirent["kind"],
-                            dirent["path"])
-                    self.__resort()
-                    self.__resizeColumns()
-                except pysvn.ClientError as e:
-                    self.__showError(e.args[0])
-                except AttributeError:
-                    self.__showError(
-                        self.tr("The installed version of PySvn should be "
-                                "1.4.0 or better."))
-            finally:
-                locker.unlock()
+                firstTime = parent == self.repoTree
+                for dirent, _lock in entries:
+                    if (
+                        (firstTime and dirent["path"] != url) or
+                        (parent != self.repoTree and dirent["path"] == url)
+                    ):
+                        continue
+                    if firstTime:
+                        if dirent["repos_path"] != "/":
+                            repoUrl = dirent["path"].replace(
+                                dirent["repos_path"], "")
+                        else:
+                            repoUrl = dirent["path"]
+                        if repoUrl != url:
+                            self.__ignoreExpand = True
+                            itm = self.__generateItem(
+                                parent, "/", "", "", 0, "",
+                                pysvn.node_kind.dir, repoUrl)
+                            itm.setExpanded(True)
+                            parent = itm
+                            urlPart = repoUrl
+                            for element in (
+                                dirent["repos_path"].split("/")[:-1]
+                            ):
+                                if element:
+                                    urlPart = "{0}/{1}".format(urlPart,
+                                                               element)
+                                    itm = self.__generateItem(
+                                        parent, element, "", "", 0, "",
+                                        pysvn.node_kind.dir, urlPart)
+                                    itm.setExpanded(True)
+                                    parent = itm
+                            self.__ignoreExpand = False
+                    itm = self.__generateItem(
+                        parent, dirent["repos_path"],
+                        dirent["created_rev"], dirent["last_author"],
+                        dirent["size"], dirent["time"], dirent["kind"],
+                        dirent["path"])
+                self.__resort()
+                self.__resizeColumns()
+            except pysvn.ClientError as e:
+                self.__showError(e.args[0])
+            except AttributeError:
+                self.__showError(
+                    self.tr("The installed version of PySvn should be "
+                            "1.4.0 or better."))
     
     def __normalizeUrl(self, url):
         """

eric ide

mercurial