Plugins/VcsPlugins/vcsSubversion/subversion.py

changeset 1268
4fc337f391c9
parent 1267
5eddb59304c7
child 1509
c0b5e693b0eb
equal deleted inserted replaced
1267:5eddb59304c7 1268:4fc337f391c9
6 """ 6 """
7 Module implementing the version control systems interface to Subversion. 7 Module implementing the version control systems interface to Subversion.
8 """ 8 """
9 9
10 import os 10 import os
11 import re
11 import shutil 12 import shutil
12 import urllib.request 13 import urllib.request
13 import urllib.parse 14 import urllib.parse
14 import urllib.error 15 import urllib.error
15 16
170 finished = process.waitForFinished(30000) 171 finished = process.waitForFinished(30000)
171 if finished and process.exitCode() == 0: 172 if finished and process.exitCode() == 0:
172 output = \ 173 output = \
173 str(process.readAllStandardOutput(), ioEncoding, 'replace') 174 str(process.readAllStandardOutput(), ioEncoding, 'replace')
174 self.versionStr = output.split()[2] 175 self.versionStr = output.split()[2]
176 v = list(re.match(r'.*?(\d+)\.(\d+)\.?(\d+)?', self.versionStr).groups())
177 for i in range(3):
178 try:
179 v[i] = int(v[i])
180 except TypeError:
181 v[i] = 0
182 except IndexError:
183 v.append(0)
184 self.version = tuple(v)
175 return True, errMsg 185 return True, errMsg
176 else: 186 else:
177 if finished: 187 if finished:
178 errMsg = \ 188 errMsg = \
179 self.trUtf8("The svn process finished with the exit code {0}")\ 189 self.trUtf8("The svn process finished with the exit code {0}")\
508 """ 518 """
509 args = [] 519 args = []
510 args.append('update') 520 args.append('update')
511 self.addArguments(args, self.options['global']) 521 self.addArguments(args, self.options['global'])
512 self.addArguments(args, self.options['update']) 522 self.addArguments(args, self.options['update'])
513 if self.versionStr >= '1.5.0': 523 if self.version >= (1, 5, 0):
514 args.append('--accept') 524 args.append('--accept')
515 args.append('postpone') 525 args.append('postpone')
516 if isinstance(name, list): 526 if isinstance(name, list):
517 dname, fnames = self.splitPathList(name) 527 dname, fnames = self.splitPathList(name)
518 self.addArguments(args, fnames) 528 self.addArguments(args, fnames)
956 url = self.__svnURL(tag) 966 url = self.__svnURL(tag)
957 tn = url 967 tn = url
958 968
959 args = [] 969 args = []
960 args.append('switch') 970 args.append('switch')
961 if self.versionStr >= '1.5.0': 971 if self.version >= (1, 5, 0):
962 args.append('--accept') 972 args.append('--accept')
963 args.append('postpone') 973 args.append('postpone')
964 args.append(url) 974 args.append(url)
965 args.append(name) 975 args.append(name)
966 976
1004 rx_rev = QRegExp('\\d+|HEAD') 1014 rx_rev = QRegExp('\\d+|HEAD')
1005 1015
1006 args = [] 1016 args = []
1007 args.append('merge') 1017 args.append('merge')
1008 self.addArguments(args, opts) 1018 self.addArguments(args, opts)
1009 if self.versionStr >= '1.5.0': 1019 if self.version >= (1, 5, 0):
1010 args.append('--accept') 1020 args.append('--accept')
1011 args.append('postpone') 1021 args.append('postpone')
1012 if force: 1022 if force:
1013 args.append('--force') 1023 args.append('--force')
1014 if rx_rev.exactMatch(urlrev1): 1024 if rx_rev.exactMatch(urlrev1):
1314 Public method used to resolve conflicts of a file/directory. 1324 Public method used to resolve conflicts of a file/directory.
1315 1325
1316 @param name file/directory name to be resolved (string) 1326 @param name file/directory name to be resolved (string)
1317 """ 1327 """
1318 args = [] 1328 args = []
1319 if self.versionStr >= '1.5.0': 1329 if self.version >= (1, 5, 0):
1320 args.append('resolve') 1330 args.append('resolve')
1321 args.append('--accept') 1331 args.append('--accept')
1322 args.append('working') 1332 args.append('working')
1323 else: 1333 else:
1324 args.append('resolved') 1334 args.append('resolved')

eric ide

mercurial