示例#1
0
	def fetchProjectBase(self, manager, name):
		url = os.path.join(self.mUrl, name)

		for count in range(2):
			if self.mErrorCount > 0:
				return -1

			if (manager.isInitialized() or manager.doInitBase(url)) and (manager.doSync(url) or manager.doDcommit(url)):
				self.addProgress()
				return 1

			if not self.doExecute(["svn", "info", url], of = "/dev/null"):
				return -1

			self.prRedInfo("Retry count = %d" % count)
			manager.removeSelf()

		self.mLockProject.acquire()
		tmpPathname = self.getTempProjectPath()
		self.mLockProject.release()

		if tmpPathname != None:
			if self.mVerbose:
				self.prRedInfo(url, " => ", tmpPathname)

			managerTemp = GitSvnManager(tmpPathname, self.mVerbose)
			if managerTemp.doInitBase(url) and managerTemp.doSync(url) and self.doExecute(["mv", managerTemp.getRootPath(), manager.getRootPath()]):
				self.addProgress()
				return 1

			managerTemp.removeSelf()

		self.prRedInfo("Checkout ", manager.getRootPath(), " Failed")

		self.mLockProject.acquire()
		self.mErrorCount = self.mErrorCount + 1
		file_append_line(self.mFileFailed, "%s => %s" % (manager.getRootPath(), url))
		self.mLockProject.release()

		return -1