eric6/Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py

changeset 7774
9eed155411f0
parent 7771
787a6b3f8c9f
child 7779
757334671130
--- a/eric6/Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py	Sat Oct 10 15:17:29 2020 +0200
+++ b/eric6/Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py	Sat Oct 10 16:03:53 2020 +0200
@@ -13,7 +13,7 @@
 
 import pysvn
 
-from PyQt5.QtCore import QMutexLocker, QFileInfo, QDateTime, Qt, pyqtSlot
+from PyQt5.QtCore import QFileInfo, QDateTime, Qt, pyqtSlot
 from PyQt5.QtGui import QTextCursor
 from PyQt5.QtWidgets import QWidget, QDialogButtonBox
 
@@ -21,6 +21,8 @@
 from E5Gui import E5MessageBox, E5FileDialog
 from E5Gui.E5OverrideCursor import E5OverrideCursor
 
+from E5Utilities.E5MutexLocker import E5MutexLocker
+
 from .SvnDialogMixin import SvnDialogMixin
 from .Ui_SvnDiffDialog import Ui_SvnDiffDialog
 from .SvnDiffHighlighter import SvnDiffHighlighter
@@ -200,66 +202,70 @@
             fnames = [fname]
         
         with E5OverrideCursor():
-            locker = QMutexLocker(self.vcs.vcsExecutionMutex)
             cwd = os.getcwd()
             os.chdir(dname)
             try:
                 dname = e5App().getObject('Project').getRelativePath(dname)
                 if dname:
                     dname += "/"
-                for name in fnames:
-                    self.__showError(
-                        self.tr("Processing file '{0}'...\n").format(name))
-                    if urls is not None:
-                        url1 = "{0}/{1}{2}".format(urls[0], dname, name)
-                        url2 = "{0}/{1}{2}".format(urls[1], dname, name)
-                        if summary:
-                            diff_summary = self.client.diff_summarize(
-                                url1, revision1=rev1,
-                                url_or_path2=url2, revision2=rev2,
-                                recurse=recurse)
-                            diff_list = []
-                            for diff_sum in diff_summary:
-                                path = diff_sum['path']
-                                diff_list.append("{0} {1}".format(
-                                    self.__getDiffSummaryKind(
-                                        diff_sum['summarize_kind']),
-                                    path))
-                            diffText = os.linesep.join(diff_list)
+                with E5MutexLocker(self.vcs.vcsExecutionMutex):
+                    for name in fnames:
+                        self.__showError(
+                            self.tr("Processing file '{0}'...\n").format(name))
+                        if urls is not None:
+                            url1 = "{0}/{1}{2}".format(urls[0], dname, name)
+                            url2 = "{0}/{1}{2}".format(urls[1], dname, name)
+                            if summary:
+                                diff_summary = self.client.diff_summarize(
+                                    url1, revision1=rev1,
+                                    url_or_path2=url2, revision2=rev2,
+                                    recurse=recurse)
+                                diff_list = []
+                                for diff_sum in diff_summary:
+                                    path = diff_sum['path']
+                                    diff_list.append("{0} {1}".format(
+                                        self.__getDiffSummaryKind(
+                                            diff_sum['summarize_kind']),
+                                        path))
+                                diffText = os.linesep.join(diff_list)
+                            else:
+                                diffText = self.client.diff(
+                                    tmpdir,
+                                    url1, revision1=rev1,
+                                    url_or_path2=url2, revision2=rev2,
+                                    recurse=recurse)
                         else:
-                            diffText = self.client.diff(
-                                tmpdir,
-                                url1, revision1=rev1,
-                                url_or_path2=url2, revision2=rev2,
-                                recurse=recurse)
-                    else:
-                        if pegRev is not None:
-                            diffText = self.client.diff_peg(
-                                tmpdir, name,
-                                peg_revision=self.__getVersionArg(pegRev),
-                                revision_start=rev1, revision_end=rev2,
-                                recurse=recurse)
-                        else:
-                            diffText = self.client.diff(
-                                tmpdir, name,
-                                revision1=rev1, revision2=rev2, recurse=recurse)
-                    counter = 0
-                    for line in diffText.splitlines():
-                        if line.startswith("--- ") or line.startswith("+++ "):
-                            self.__processFileLine(line)
-                        
-                        self.__appendText("{0}{1}".format(line, os.linesep))
-                        counter += 1
-                        if counter == 30:
-                            # check for cancel every 30 lines
-                            counter = 0
-                            if self._clientCancelCallback():
-                                break
-                    if self._clientCancelCallback():
-                        break
+                            if pegRev is not None:
+                                diffText = self.client.diff_peg(
+                                    tmpdir, name,
+                                    peg_revision=self.__getVersionArg(pegRev),
+                                    revision_start=rev1, revision_end=rev2,
+                                    recurse=recurse)
+                            else:
+                                diffText = self.client.diff(
+                                    tmpdir, name,
+                                    revision1=rev1, revision2=rev2,
+                                    recurse=recurse)
+                        counter = 0
+                        for line in diffText.splitlines():
+                            if (
+                                line.startswith("--- ") or
+                                line.startswith("+++ ")
+                            ):
+                                self.__processFileLine(line)
+                            
+                            self.__appendText(
+                                "{0}{1}".format(line, os.linesep))
+                            counter += 1
+                            if counter == 30:
+                                # check for cancel every 30 lines
+                                counter = 0
+                                if self._clientCancelCallback():
+                                    break
+                        if self._clientCancelCallback():
+                            break
             except pysvn.ClientError as e:
                 self.__showError(e.args[0])
-            locker.unlock()
             os.chdir(cwd)
         self.__finish()
         

eric ide

mercurial