Plugins/VcsPlugins/vcsPySvn/subversion.py

changeset 96
9624a110667d
parent 87
4cc5c8d1184d
child 110
c9a969db1469
equal deleted inserted replaced
95:261bc03812fd 96:9624a110667d
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 shutil 11 import shutil
12 import types
13 import urllib.request, urllib.parse, urllib.error 12 import urllib.request, urllib.parse, urllib.error
14 import time 13 import time
15 14
16 from PyQt4.QtCore import * 15 from PyQt4.QtCore import *
17 from PyQt4.QtGui import * 16 from PyQt4.QtGui import *
46 from .SvnUrlSelectionDialog import SvnUrlSelectionDialog 45 from .SvnUrlSelectionDialog import SvnUrlSelectionDialog
47 from .SvnRepoBrowserDialog import SvnRepoBrowserDialog 46 from .SvnRepoBrowserDialog import SvnRepoBrowserDialog
48 from .SvnStatusMonitorThread import SvnStatusMonitorThread 47 from .SvnStatusMonitorThread import SvnStatusMonitorThread
49 48
50 from .ProjectBrowserHelper import SvnProjectBrowserHelper 49 from .ProjectBrowserHelper import SvnProjectBrowserHelper
51 from .ProjectHelper import SvnProjectHelper
52 50
53 from Plugins.VcsPlugins.vcsSubversion.SvnDialog import SvnDialog as SvnProcessDialog 51 from Plugins.VcsPlugins.vcsSubversion.SvnDialog import SvnDialog as SvnProcessDialog
54 52
55 import Utilities 53 import Utilities
56 54
380 url, projectDir), 378 url, projectDir),
381 client) 379 client)
382 QApplication.processEvents() 380 QApplication.processEvents()
383 locker = QMutexLocker(self.vcsExecutionMutex) 381 locker = QMutexLocker(self.vcsExecutionMutex)
384 try: 382 try:
385 rev = client.checkout(url, projectDir, recurse) 383 client.checkout(url, projectDir, recurse)
386 status = True 384 status = True
387 except pysvn.ClientError as e: 385 except pysvn.ClientError as e:
388 status = False 386 status = False
389 if not noDialog: 387 if not noDialog:
390 dlg.showError(e.args[0]) 388 dlg.showError(e.args[0])
441 url, projectDir), 439 url, projectDir),
442 client) 440 client)
443 QApplication.processEvents() 441 QApplication.processEvents()
444 locker = QMutexLocker(self.vcsExecutionMutex) 442 locker = QMutexLocker(self.vcsExecutionMutex)
445 try: 443 try:
446 rev = client.export(url, projectDir, force = True, recurse = recurse) 444 client.export(url, projectDir, force = True, recurse = recurse)
447 status = True 445 status = True
448 except pysvn.ClientError as e: 446 except pysvn.ClientError as e:
449 status = False 447 status = False
450 dlg.showError(e.args[0]) 448 dlg.showError(e.args[0])
451 locker.unlock() 449 locker.unlock()
581 "update%s %s" % ((not recurse) and " --non-recursive" or "", 579 "update%s %s" % ((not recurse) and " --non-recursive" or "",
582 " ".join(fnames)), 580 " ".join(fnames)),
583 client) 581 client)
584 QApplication.processEvents() 582 QApplication.processEvents()
585 try: 583 try:
586 revlist = client.update(fnames, recurse) 584 client.update(fnames, recurse)
587 except pysvn.ClientError as e: 585 except pysvn.ClientError as e:
588 dlg.showError(e.args[0]) 586 dlg.showError(e.args[0])
589 locker.unlock() 587 locker.unlock()
590 if not noDialog: 588 if not noDialog:
591 dlg.finish() 589 dlg.finish()
1261 if name in names: 1259 if name in names:
1262 names[name] = self.canBeCommitted 1260 names[name] = self.canBeCommitted
1263 self.statusCache[name] = self.canBeCommitted 1261 self.statusCache[name] = self.canBeCommitted
1264 else: 1262 else:
1265 self.statusCache[name] = self.canBeAdded 1263 self.statusCache[name] = self.canBeAdded
1266 except pysvn.ClientError as e: 1264 except pysvn.ClientError:
1267 locker.unlock() # ignore pysvn errors 1265 locker.unlock() # ignore pysvn errors
1268 1266
1269 return names 1267 return names
1270 1268
1271 def clearStatusCache(self): 1269 def clearStatusCache(self):
1294 "cleanup %s" % name, 1292 "cleanup %s" % name,
1295 client) 1293 client)
1296 QApplication.processEvents() 1294 QApplication.processEvents()
1297 locker = QMutexLocker(self.vcsExecutionMutex) 1295 locker = QMutexLocker(self.vcsExecutionMutex)
1298 try: 1296 try:
1299 rev = client.cleanup(name) 1297 client.cleanup(name)
1300 except pysvn.ClientError as e: 1298 except pysvn.ClientError as e:
1301 dlg.showError(e.args[0]) 1299 dlg.showError(e.args[0])
1302 locker.unlock() 1300 locker.unlock()
1303 dlg.finish() 1301 dlg.finish()
1304 dlg.exec_() 1302 dlg.exec_()
1406 """ 1404 """
1407 client = pysvn.Client() 1405 client = pysvn.Client()
1408 locker = QMutexLocker(self.vcsExecutionMutex) 1406 locker = QMutexLocker(self.vcsExecutionMutex)
1409 try: 1407 try:
1410 entry = client.info(path) 1408 entry = client.info(path)
1411 return entry.url 1409 url = entry.url
1412 except pysvn.ClientError: 1410 except pysvn.ClientError:
1413 return None 1411 url = None
1412 locker.unlock()
1413 return url
1414 1414
1415 def svnResolve(self, name): 1415 def svnResolve(self, name):
1416 """ 1416 """
1417 Public method used to resolve conflicts of a file/directory. 1417 Public method used to resolve conflicts of a file/directory.
1418 1418
1437 " ".join(fnames)), 1437 " ".join(fnames)),
1438 client) 1438 client)
1439 QApplication.processEvents() 1439 QApplication.processEvents()
1440 try: 1440 try:
1441 for name in fnames: 1441 for name in fnames:
1442 rev = client.resolved(name, recurse = recurse) 1442 client.resolved(name, recurse = recurse)
1443 except pysvn.ClientError as e: 1443 except pysvn.ClientError as e:
1444 dlg.showError(e.args[0]) 1444 dlg.showError(e.args[0])
1445 locker.unlock() 1445 locker.unlock()
1446 dlg.finish() 1446 dlg.finish()
1447 dlg.exec_() 1447 dlg.exec_()

eric ide

mercurial