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, urllib.parse, urllib.error |
13 import urllib.request, urllib.parse, urllib.error |
13 |
14 |
14 from PyQt4.QtCore import * |
15 from PyQt4.QtCore import * |
15 from PyQt4.QtGui import * |
16 from PyQt4.QtGui import * |
167 finished = process.waitForFinished(30000) |
168 finished = process.waitForFinished(30000) |
168 if finished and process.exitCode() == 0: |
169 if finished and process.exitCode() == 0: |
169 output = \ |
170 output = \ |
170 str(process.readAllStandardOutput(), ioEncoding, 'replace') |
171 str(process.readAllStandardOutput(), ioEncoding, 'replace') |
171 self.versionStr = output.split()[2] |
172 self.versionStr = output.split()[2] |
|
173 v = list(re.match(r'.*?(\d+)\.(\d+)\.?(\d+)?', self.versionStr).groups()) |
|
174 for i in range(3): |
|
175 try: |
|
176 v[i] = int(v[i]) |
|
177 except TypeError: |
|
178 v[i] = 0 |
|
179 except IndexError: |
|
180 v.append(0) |
|
181 self.version = tuple(v) |
172 return True, errMsg |
182 return True, errMsg |
173 else: |
183 else: |
174 if finished: |
184 if finished: |
175 errMsg = \ |
185 errMsg = \ |
176 self.trUtf8("The svn process finished with the exit code {0}")\ |
186 self.trUtf8("The svn process finished with the exit code {0}")\ |
505 """ |
515 """ |
506 args = [] |
516 args = [] |
507 args.append('update') |
517 args.append('update') |
508 self.addArguments(args, self.options['global']) |
518 self.addArguments(args, self.options['global']) |
509 self.addArguments(args, self.options['update']) |
519 self.addArguments(args, self.options['update']) |
510 if self.versionStr >= '1.5.0': |
520 if self.version >= (1, 5, 0): |
511 args.append('--accept') |
521 args.append('--accept') |
512 args.append('postpone') |
522 args.append('postpone') |
513 if isinstance(name, list): |
523 if isinstance(name, list): |
514 dname, fnames = self.splitPathList(name) |
524 dname, fnames = self.splitPathList(name) |
515 self.addArguments(args, fnames) |
525 self.addArguments(args, fnames) |
947 url = self.__svnURL(tag) |
957 url = self.__svnURL(tag) |
948 tn = url |
958 tn = url |
949 |
959 |
950 args = [] |
960 args = [] |
951 args.append('switch') |
961 args.append('switch') |
952 if self.versionStr >= '1.5.0': |
962 if self.version >= (1, 5, 0): |
953 args.append('--accept') |
963 args.append('--accept') |
954 args.append('postpone') |
964 args.append('postpone') |
955 args.append(url) |
965 args.append(url) |
956 args.append(name) |
966 args.append(name) |
957 |
967 |
992 rx_rev = QRegExp('\\d+|HEAD') |
1002 rx_rev = QRegExp('\\d+|HEAD') |
993 |
1003 |
994 args = [] |
1004 args = [] |
995 args.append('merge') |
1005 args.append('merge') |
996 self.addArguments(args, opts) |
1006 self.addArguments(args, opts) |
997 if self.versionStr >= '1.5.0': |
1007 if self.version >= (1, 5, 0): |
998 args.append('--accept') |
1008 args.append('--accept') |
999 args.append('postpone') |
1009 args.append('postpone') |
1000 if force: |
1010 if force: |
1001 args.append('--force') |
1011 args.append('--force') |
1002 if rx_rev.exactMatch(urlrev1): |
1012 if rx_rev.exactMatch(urlrev1): |
1302 Public method used to resolve conflicts of a file/directory. |
1312 Public method used to resolve conflicts of a file/directory. |
1303 |
1313 |
1304 @param name file/directory name to be resolved (string) |
1314 @param name file/directory name to be resolved (string) |
1305 """ |
1315 """ |
1306 args = [] |
1316 args = [] |
1307 if self.versionStr >= '1.5.0': |
1317 if self.version >= (1, 5, 0): |
1308 args.append('resolve') |
1318 args.append('resolve') |
1309 args.append('--accept') |
1319 args.append('--accept') |
1310 args.append('working') |
1320 args.append('working') |
1311 else: |
1321 else: |
1312 args.append('resolved') |
1322 args.append('resolved') |