summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--subcmds/sync.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/subcmds/sync.py b/subcmds/sync.py
index 9b4a6147..97da6204 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -440,7 +440,7 @@ later is required to fix a server side protocol bug.
440 finally: 440 finally:
441 sem.release() 441 sem.release()
442 442
443 def _CheckoutOne(self, opt, project, lock, pm, err_event): 443 def _CheckoutOne(self, opt, project, lock, pm, err_event, err_results):
444 """Checkout work tree for one project 444 """Checkout work tree for one project
445 445
446 Args: 446 Args:
@@ -452,6 +452,8 @@ later is required to fix a server side protocol bug.
452 lock held). 452 lock held).
453 err_event: We'll set this event in the case of an error (after printing 453 err_event: We'll set this event in the case of an error (after printing
454 out info about the error). 454 out info about the error).
455 err_results: A list of strings, paths to git repos where checkout
456 failed.
455 457
456 Returns: 458 Returns:
457 Whether the fetch was successful. 459 Whether the fetch was successful.
@@ -496,6 +498,8 @@ later is required to fix a server side protocol bug.
496 raise 498 raise
497 finally: 499 finally:
498 if did_lock: 500 if did_lock:
501 if not success:
502 err_results.append(project.relpath)
499 lock.release() 503 lock.release()
500 finish = time.time() 504 finish = time.time()
501 self.event_log.AddSync(project, event_log.TASK_SYNC_LOCAL, 505 self.event_log.AddSync(project, event_log.TASK_SYNC_LOCAL,
@@ -528,6 +532,7 @@ later is required to fix a server side protocol bug.
528 threads = set() 532 threads = set()
529 sem = _threading.Semaphore(syncjobs) 533 sem = _threading.Semaphore(syncjobs)
530 err_event = _threading.Event() 534 err_event = _threading.Event()
535 err_results = []
531 536
532 for project in all_projects: 537 for project in all_projects:
533 # Check for any errors before running any more tasks. 538 # Check for any errors before running any more tasks.
@@ -542,7 +547,8 @@ later is required to fix a server side protocol bug.
542 project=project, 547 project=project,
543 lock=lock, 548 lock=lock,
544 pm=pm, 549 pm=pm,
545 err_event=err_event) 550 err_event=err_event,
551 err_results=err_results)
546 if syncjobs > 1: 552 if syncjobs > 1:
547 t = _threading.Thread(target=self._CheckoutWorker, 553 t = _threading.Thread(target=self._CheckoutWorker,
548 kwargs=kwargs) 554 kwargs=kwargs)
@@ -560,6 +566,9 @@ later is required to fix a server side protocol bug.
560 # If we saw an error, exit with code 1 so that other scripts can check. 566 # If we saw an error, exit with code 1 so that other scripts can check.
561 if err_event.isSet(): 567 if err_event.isSet():
562 print('\nerror: Exited sync due to checkout errors', file=sys.stderr) 568 print('\nerror: Exited sync due to checkout errors', file=sys.stderr)
569 if err_results:
570 print('Failing repos:\n%s' % '\n'.join(err_results),
571 file=sys.stderr)
563 sys.exit(1) 572 sys.exit(1)
564 573
565 def _GCProjects(self, projects): 574 def _GCProjects(self, projects):