From ea2e330e43c182dc16b0111ebc69ee5a71ee4ce1 Mon Sep 17 00:00:00 2001 From: Gavin Mak Date: Sat, 11 Mar 2023 06:46:20 +0000 Subject: Format codebase with black and check formatting in CQ Apply rules set by https://gerrit-review.googlesource.com/c/git-repo/+/362954/ across the codebase and fix any lingering errors caught by flake8. Also check black formatting in run_tests (and CQ). Bug: b/267675342 Change-Id: I972d77649dac351150dcfeb1cd1ad0ea2efc1956 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/363474 Reviewed-by: Mike Frysinger Tested-by: Gavin Mak Commit-Queue: Gavin Mak --- subcmds/start.py | 250 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 139 insertions(+), 111 deletions(-) (limited to 'subcmds/start.py') diff --git a/subcmds/start.py b/subcmds/start.py index 809df963..d7772b33 100644 --- a/subcmds/start.py +++ b/subcmds/start.py @@ -25,119 +25,147 @@ from project import SyncBuffer class Start(Command): - COMMON = True - helpSummary = "Start a new branch for development" - helpUsage = """ + COMMON = True + helpSummary = "Start a new branch for development" + helpUsage = """ %prog [--all | ...] """ - helpDescription = """ + helpDescription = """ '%prog' begins a new branch of development, starting from the revision specified in the manifest. """ - PARALLEL_JOBS = DEFAULT_LOCAL_JOBS - - def _Options(self, p): - p.add_option('--all', - dest='all', action='store_true', - help='begin branch in all projects') - p.add_option('-r', '--rev', '--revision', dest='revision', - help='point branch at this revision instead of upstream') - p.add_option('--head', '--HEAD', - dest='revision', action='store_const', const='HEAD', - help='abbreviation for --rev HEAD') - - def ValidateOptions(self, opt, args): - if not args: - self.Usage() - - nb = args[0] - if not git.check_ref_format('heads/%s' % nb): - self.OptionParser.error("'%s' is not a valid name" % nb) - - def _ExecuteOne(self, revision, nb, project): - """Start one project.""" - # If the current revision is immutable, such as a SHA1, a tag or - # a change, then we can't push back to it. Substitute with - # dest_branch, if defined; or with manifest default revision instead. - branch_merge = '' - if IsImmutable(project.revisionExpr): - if project.dest_branch: - branch_merge = project.dest_branch - else: - branch_merge = self.manifest.default.revisionExpr - - try: - ret = project.StartBranch( - nb, branch_merge=branch_merge, revision=revision) - except Exception as e: - print('error: unable to checkout %s: %s' % (project.name, e), file=sys.stderr) - ret = False - return (ret, project) - - def Execute(self, opt, args): - nb = args[0] - err = [] - projects = [] - if not opt.all: - projects = args[1:] - if len(projects) < 1: - projects = ['.'] # start it in the local project by default - - all_projects = self.GetProjects(projects, - missing_ok=bool(self.gitc_manifest), - all_manifests=not opt.this_manifest_only) - - # This must happen after we find all_projects, since GetProjects may need - # the local directory, which will disappear once we save the GITC manifest. - if self.gitc_manifest: - gitc_projects = self.GetProjects(projects, manifest=self.gitc_manifest, - missing_ok=True) - for project in gitc_projects: - if project.old_revision: - project.already_synced = True - else: - project.already_synced = False - project.old_revision = project.revisionExpr - project.revisionExpr = None - # Save the GITC manifest. - gitc_utils.save_manifest(self.gitc_manifest) - - # Make sure we have a valid CWD - if not os.path.exists(os.getcwd()): - os.chdir(self.manifest.topdir) - - pm = Progress('Syncing %s' % nb, len(all_projects), quiet=opt.quiet) - for project in all_projects: - gitc_project = self.gitc_manifest.paths[project.relpath] - # Sync projects that have not been opened. - if not gitc_project.already_synced: - proj_localdir = os.path.join(self.gitc_manifest.gitc_client_dir, - project.relpath) - project.worktree = proj_localdir - if not os.path.exists(proj_localdir): - os.makedirs(proj_localdir) - project.Sync_NetworkHalf() - sync_buf = SyncBuffer(self.manifest.manifestProject.config) - project.Sync_LocalHalf(sync_buf) - project.revisionId = gitc_project.old_revision - pm.update() - pm.end() - - def _ProcessResults(_pool, pm, results): - for (result, project) in results: - if not result: - err.append(project) - pm.update() - - self.ExecuteInParallel( - opt.jobs, - functools.partial(self._ExecuteOne, opt.revision, nb), - all_projects, - callback=_ProcessResults, - output=Progress('Starting %s' % (nb,), len(all_projects), quiet=opt.quiet)) - - if err: - for p in err: - print("error: %s/: cannot start %s" % (p.RelPath(local=opt.this_manifest_only), nb), - file=sys.stderr) - sys.exit(1) + PARALLEL_JOBS = DEFAULT_LOCAL_JOBS + + def _Options(self, p): + p.add_option( + "--all", + dest="all", + action="store_true", + help="begin branch in all projects", + ) + p.add_option( + "-r", + "--rev", + "--revision", + dest="revision", + help="point branch at this revision instead of upstream", + ) + p.add_option( + "--head", + "--HEAD", + dest="revision", + action="store_const", + const="HEAD", + help="abbreviation for --rev HEAD", + ) + + def ValidateOptions(self, opt, args): + if not args: + self.Usage() + + nb = args[0] + if not git.check_ref_format("heads/%s" % nb): + self.OptionParser.error("'%s' is not a valid name" % nb) + + def _ExecuteOne(self, revision, nb, project): + """Start one project.""" + # If the current revision is immutable, such as a SHA1, a tag or + # a change, then we can't push back to it. Substitute with + # dest_branch, if defined; or with manifest default revision instead. + branch_merge = "" + if IsImmutable(project.revisionExpr): + if project.dest_branch: + branch_merge = project.dest_branch + else: + branch_merge = self.manifest.default.revisionExpr + + try: + ret = project.StartBranch( + nb, branch_merge=branch_merge, revision=revision + ) + except Exception as e: + print( + "error: unable to checkout %s: %s" % (project.name, e), + file=sys.stderr, + ) + ret = False + return (ret, project) + + def Execute(self, opt, args): + nb = args[0] + err = [] + projects = [] + if not opt.all: + projects = args[1:] + if len(projects) < 1: + projects = ["."] # start it in the local project by default + + all_projects = self.GetProjects( + projects, + missing_ok=bool(self.gitc_manifest), + all_manifests=not opt.this_manifest_only, + ) + + # This must happen after we find all_projects, since GetProjects may + # need the local directory, which will disappear once we save the GITC + # manifest. + if self.gitc_manifest: + gitc_projects = self.GetProjects( + projects, manifest=self.gitc_manifest, missing_ok=True + ) + for project in gitc_projects: + if project.old_revision: + project.already_synced = True + else: + project.already_synced = False + project.old_revision = project.revisionExpr + project.revisionExpr = None + # Save the GITC manifest. + gitc_utils.save_manifest(self.gitc_manifest) + + # Make sure we have a valid CWD. + if not os.path.exists(os.getcwd()): + os.chdir(self.manifest.topdir) + + pm = Progress("Syncing %s" % nb, len(all_projects), quiet=opt.quiet) + for project in all_projects: + gitc_project = self.gitc_manifest.paths[project.relpath] + # Sync projects that have not been opened. + if not gitc_project.already_synced: + proj_localdir = os.path.join( + self.gitc_manifest.gitc_client_dir, project.relpath + ) + project.worktree = proj_localdir + if not os.path.exists(proj_localdir): + os.makedirs(proj_localdir) + project.Sync_NetworkHalf() + sync_buf = SyncBuffer(self.manifest.manifestProject.config) + project.Sync_LocalHalf(sync_buf) + project.revisionId = gitc_project.old_revision + pm.update() + pm.end() + + def _ProcessResults(_pool, pm, results): + for result, project in results: + if not result: + err.append(project) + pm.update() + + self.ExecuteInParallel( + opt.jobs, + functools.partial(self._ExecuteOne, opt.revision, nb), + all_projects, + callback=_ProcessResults, + output=Progress( + "Starting %s" % (nb,), len(all_projects), quiet=opt.quiet + ), + ) + + if err: + for p in err: + print( + "error: %s/: cannot start %s" + % (p.RelPath(local=opt.this_manifest_only), nb), + file=sys.stderr, + ) + sys.exit(1) -- cgit v1.2.3-54-g00ecf