Plugins/VcsPlugins/vcsMercurial/HgClient.py

changeset 1261
bb9ce68a0236
parent 1260
9488a3aceb0e
child 1266
ce8a103501a5
--- a/Plugins/VcsPlugins/vcsMercurial/HgClient.py	Thu Sep 01 08:33:53 2011 +0200
+++ b/Plugins/VcsPlugins/vcsMercurial/HgClient.py	Thu Sep 01 09:04:41 2011 +0200
@@ -35,16 +35,13 @@
         """
         super().__init__(parent)
         
-        self.__server = QProcess()
-        self.__server.setWorkingDirectory(repoPath)
+        self.__server = None
         self.__started = False
         self.__version = None
         self.__encoding = Preferences.getSystem("IOEncoding")
         self.__cancel = False
         self.__commandRunning = False
-        
-        # connect signals
-        self.__server.finished.connect(self.__serverFinished)
+        self.__repoPath = repoPath
         
         # generate command line and environment
         self.__serverArgs = []
@@ -58,9 +55,6 @@
             self.__serverArgs.append(repoPath)
         
         if encoding:
-            env = QProcessEnvironment.systemEnvironment()
-            env.insert("HGENCODING", encoding)
-            self.__server.setProcessEnvironment(env)
             self.__encoding = encoding
     
     def startServer(self):
@@ -70,6 +64,18 @@
         @return tuple of flag indicating a successful start (boolean) and
             an error message (string) in case of failure
         """
+        self.__server = QProcess()
+        self.__server.setWorkingDirectory(self.__repoPath)
+        
+        # connect signals
+        self.__server.finished.connect(self.__serverFinished)
+        
+        # set the encoding for the server
+        if self.__encoding:
+            env = QProcessEnvironment.systemEnvironment()
+            env.insert("HGENCODING", self.__encoding)
+            self.__server.setProcessEnvironment(env)
+        
         self.__server.start('hg', self.__serverArgs)
         serverStarted = self.__server.waitForStarted()
         if not serverStarted:
@@ -95,6 +101,10 @@
             if not res:
                 self.__server.kill()
                 self.__server.waitForFinished(3000)
+        
+        self.__started = False
+        self.__server.finished.disconnect(self.__serverFinished)
+        self.__server = None
     
     def restartServer(self):
         """

eric ide

mercurial