| 237 | callbacks=ProgressCallback()) |
| 238 | |
| 239 | def run(self): |
| 240 | try: |
| 241 | path = pygit2.discover_repository(Constants.DirProjects) |
| 242 | if not path: |
| 243 | # 本地项目不存在 |
| 244 | if os.path.exists(Constants.DirProjects): |
| 245 | # 如果文件夹存在则删除 |
| 246 | AppLog.info('remove dir: {}'.format(Constants.DirProjects)) |
| 247 | self.remove() |
| 248 | AppLog.info('clone into dir: {}'.format(Constants.DirProjects)) |
| 249 | self.clone() |
| 250 | else: |
| 251 | repo = pygit2.Repository(path) |
| 252 | if repo.is_empty: # 如果项目为空 |
| 253 | if os.path.exists(Constants.DirProjects): |
| 254 | # 如果文件夹存在则删除 |
| 255 | AppLog.info('remove dir: {}'.format( |
| 256 | Constants.DirProjects)) |
| 257 | self.remove() |
| 258 | AppLog.info('clone into dir: {}'.format( |
| 259 | Constants.DirProjects)) |
| 260 | self.clone() |
| 261 | else: |
| 262 | # 重置并pull |
| 263 | AppLog.info('reset dir: {}'.format(Constants.DirProjects)) |
| 264 | repo.reset(repo.head.target, pygit2.GIT_RESET_HARD) |
| 265 | Signals.progressUpdated.emit(5, 100) |
| 266 | AppLog.info('pull into dir: {}'.format( |
| 267 | Constants.DirProjects)) |
| 268 | self.pull(repo) |
| 269 | Signals.progressStoped.emit() |
| 270 | except Exception as e: |
| 271 | AppLog.exception(e) |
| 272 | |
| 273 | AppLog.info('clone thread end') |
| 274 | Signals.progressStoped.emit() |
| 275 | Signals.cloneFinished.emit('') |
| 276 | CloneThread.quit() |
| 277 | |
| 278 | |
| 279 | class UpgradeThread(QObject): |