diff --git a/command.py b/command.py index 7c68ebc5..68f36f03 100644 --- a/command.py +++ b/command.py @@ -320,7 +320,8 @@ class Command(object): for arg in args: # We have to filter by manifest groups in case the requested project is # checked out multiple times or differently based on them. - projects = [project for project in manifest.GetProjectsWithName( + projects = [project + for project in manifest.GetProjectsWithName( arg, all_manifests=all_manifests) if project.MatchesGroups(groups)] diff --git a/git_command.py b/git_command.py index 3a3bb34d..d4d4bed4 100644 --- a/git_command.py +++ b/git_command.py @@ -159,12 +159,12 @@ def git_require(min_version, fail=False, msg=''): def _build_env( - _kwargs_only=(), - bare: Optional[bool] = False, - disable_editor: Optional[bool] = False, - ssh_proxy: Optional[Any] = None, - gitdir: Optional[str] = None, - objdir: Optional[str] = None + _kwargs_only=(), + bare: Optional[bool] = False, + disable_editor: Optional[bool] = False, + ssh_proxy: Optional[Any] = None, + gitdir: Optional[str] = None, + objdir: Optional[str] = None ): """Constucts an env dict for command execution.""" @@ -194,8 +194,7 @@ def _build_env( env['GIT_OBJECT_DIRECTORY'] = objdir alt_objects = os.path.join(gitdir, 'objects') if gitdir else None - if (alt_objects and - os.path.realpath(alt_objects) != os.path.realpath(objdir)): + if alt_objects and os.path.realpath(alt_objects) != os.path.realpath(objdir): # Allow git to search the original place in case of local or unique refs # that git will attempt to resolve even if we aren't fetching them. env['GIT_ALTERNATE_OBJECT_DIRECTORIES'] = alt_objects @@ -236,11 +235,11 @@ class GitCommand(object): gitdir = gitdir.replace('\\', '/') env = _build_env( - disable_editor=disable_editor, - ssh_proxy=ssh_proxy, - objdir=objdir, - gitdir=gitdir, - bare=bare, + disable_editor=disable_editor, + ssh_proxy=ssh_proxy, + objdir=objdir, + gitdir=gitdir, + bare=bare, ) command = [GIT] @@ -279,7 +278,8 @@ class GitCommand(object): if 'GIT_OBJECT_DIRECTORY' in env: dbg += ': export GIT_OBJECT_DIRECTORY=%s\n' % env['GIT_OBJECT_DIRECTORY'] if 'GIT_ALTERNATE_OBJECT_DIRECTORIES' in env: - dbg += ': export GIT_ALTERNATE_OBJECT_DIRECTORIES=%s\n' % env['GIT_ALTERNATE_OBJECT_DIRECTORIES'] + dbg += ': export GIT_ALTERNATE_OBJECT_DIRECTORIES=%s\n' % ( + env['GIT_ALTERNATE_OBJECT_DIRECTORIES']) dbg += ': ' dbg += ' '.join(command) @@ -295,13 +295,13 @@ class GitCommand(object): with Trace('git command %s %s with debug: %s', LAST_GITDIR, command, dbg): try: p = subprocess.Popen(command, - cwd=cwd, - env=env, - encoding='utf-8', - errors='backslashreplace', - stdin=stdin, - stdout=stdout, - stderr=stderr) + cwd=cwd, + env=env, + encoding='utf-8', + errors='backslashreplace', + stdin=stdin, + stdout=stdout, + stderr=stderr) except Exception as e: raise GitError('%s: %s' % (command[1], e)) diff --git a/git_config.py b/git_config.py index af1a1015..029beb4d 100644 --- a/git_config.py +++ b/git_config.py @@ -188,7 +188,7 @@ class GitConfig(object): if v in ('false', 'no'): return False print(f"warning: expected {name} to represent a boolean, got {v} instead", - file=sys.stderr) + file=sys.stderr) return None def SetBoolean(self, name, value): @@ -197,7 +197,7 @@ class GitConfig(object): value = 'true' if value else 'false' self.SetString(name, value) - def GetString(self, name: str, all_keys: bool = False) -> Union[str, None]: + def GetString(self, name: str, all_keys: bool = False) -> Union[str, None]: """Get the first value for a key, or None if it is not defined. This configuration file is used first, if the key is not diff --git a/project.py b/project.py index 619cdfd1..996fc02e 100644 --- a/project.py +++ b/project.py @@ -54,6 +54,7 @@ class SyncNetworkHalfResult(NamedTuple): # commit already present. remote_fetched: bool + # Maximum sleep time allowed during retries. MAXIMUM_RETRY_SLEEP_SEC = 3600.0 # +-10% random jitter is added to each Fetches retry sleep duration. @@ -63,6 +64,7 @@ RETRY_JITTER_PERCENT = 0.1 # TODO(vapier): Remove knob once behavior is verified. _ALTERNATES = os.environ.get('REPO_USE_ALTERNATES') == '1' + def _lwrite(path, content): lock = '%s.lock' % path @@ -3415,6 +3417,7 @@ class RepoProject(MetaProject): except OSError: return 0 + class ManifestProject(MetaProject): """The MetaProject for manifests.""" @@ -3845,11 +3848,12 @@ class ManifestProject(MetaProject): self.config.SetBoolean('repo.superproject', use_superproject) if not standalone_manifest: - if not self.Sync_NetworkHalf( + success = self.Sync_NetworkHalf( is_new=is_new, quiet=not verbose, verbose=verbose, clone_bundle=clone_bundle, current_branch_only=current_branch_only, tags=tags, submodules=submodules, clone_filter=clone_filter, - partial_clone_exclude=self.manifest.PartialCloneExclude).success: + partial_clone_exclude=self.manifest.PartialCloneExclude).success + if not success: r = self.GetRemote() print('fatal: cannot obtain manifest %s' % r.url, file=sys.stderr) diff --git a/subcmds/upload.py b/subcmds/upload.py index 5b17fb51..dc7e26da 100644 --- a/subcmds/upload.py +++ b/subcmds/upload.py @@ -615,9 +615,8 @@ Gerrit Code Review: https://www.gerritcodereview.com/ hook = RepoHook.FromSubcmd( hook_type='pre-upload', manifest=manifest, opt=opt, abort_if_user_denies=True) - if not hook.Run( - project_list=pending_proj_names, - worktree_list=pending_worktrees): + if not hook.Run(project_list=pending_proj_names, + worktree_list=pending_worktrees): ret = 1 if ret: return ret