Plugins/VcsPlugins/vcsMercurial/HgClient.py

changeset 1261
bb9ce68a0236
parent 1260
9488a3aceb0e
child 1266
ce8a103501a5
equal deleted inserted replaced
1260:9488a3aceb0e 1261:bb9ce68a0236
33 @param encoding encoding to be used by the command server (string) 33 @param encoding encoding to be used by the command server (string)
34 @param parent reference to the parent object (QObject) 34 @param parent reference to the parent object (QObject)
35 """ 35 """
36 super().__init__(parent) 36 super().__init__(parent)
37 37
38 self.__server = QProcess() 38 self.__server = None
39 self.__server.setWorkingDirectory(repoPath)
40 self.__started = False 39 self.__started = False
41 self.__version = None 40 self.__version = None
42 self.__encoding = Preferences.getSystem("IOEncoding") 41 self.__encoding = Preferences.getSystem("IOEncoding")
43 self.__cancel = False 42 self.__cancel = False
44 self.__commandRunning = False 43 self.__commandRunning = False
45 44 self.__repoPath = repoPath
46 # connect signals
47 self.__server.finished.connect(self.__serverFinished)
48 45
49 # generate command line and environment 46 # generate command line and environment
50 self.__serverArgs = [] 47 self.__serverArgs = []
51 self.__serverArgs.append("serve") 48 self.__serverArgs.append("serve")
52 self.__serverArgs.append("--cmdserver") 49 self.__serverArgs.append("--cmdserver")
56 if repoPath: 53 if repoPath:
57 self.__serverArgs.append("--repository") 54 self.__serverArgs.append("--repository")
58 self.__serverArgs.append(repoPath) 55 self.__serverArgs.append(repoPath)
59 56
60 if encoding: 57 if encoding:
61 env = QProcessEnvironment.systemEnvironment()
62 env.insert("HGENCODING", encoding)
63 self.__server.setProcessEnvironment(env)
64 self.__encoding = encoding 58 self.__encoding = encoding
65 59
66 def startServer(self): 60 def startServer(self):
67 """ 61 """
68 Public method to start the command server. 62 Public method to start the command server.
69 63
70 @return tuple of flag indicating a successful start (boolean) and 64 @return tuple of flag indicating a successful start (boolean) and
71 an error message (string) in case of failure 65 an error message (string) in case of failure
72 """ 66 """
67 self.__server = QProcess()
68 self.__server.setWorkingDirectory(self.__repoPath)
69
70 # connect signals
71 self.__server.finished.connect(self.__serverFinished)
72
73 # set the encoding for the server
74 if self.__encoding:
75 env = QProcessEnvironment.systemEnvironment()
76 env.insert("HGENCODING", self.__encoding)
77 self.__server.setProcessEnvironment(env)
78
73 self.__server.start('hg', self.__serverArgs) 79 self.__server.start('hg', self.__serverArgs)
74 serverStarted = self.__server.waitForStarted() 80 serverStarted = self.__server.waitForStarted()
75 if not serverStarted: 81 if not serverStarted:
76 return False, self.trUtf8( 82 return False, self.trUtf8(
77 'The process {0} could not be started. ' 83 'The process {0} could not be started. '
93 self.__server.terminate() 99 self.__server.terminate()
94 res = self.__server.waitForFinished(3000) 100 res = self.__server.waitForFinished(3000)
95 if not res: 101 if not res:
96 self.__server.kill() 102 self.__server.kill()
97 self.__server.waitForFinished(3000) 103 self.__server.waitForFinished(3000)
104
105 self.__started = False
106 self.__server.finished.disconnect(self.__serverFinished)
107 self.__server = None
98 108
99 def restartServer(self): 109 def restartServer(self):
100 """ 110 """
101 Public method to restart the command server. 111 Public method to restart the command server.
102 112

eric ide

mercurial