mirror of
https://gerrit.googlesource.com/git-repo
synced 2025-07-04 20:17:16 +00:00
Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
ab2d321104 | |||
aada468916 | |||
1d5098617e | |||
e219c78fe5 |
17
project.py
17
project.py
@ -3375,20 +3375,25 @@ class Project:
|
|||||||
setting = fp.read()
|
setting = fp.read()
|
||||||
assert setting.startswith("gitdir:")
|
assert setting.startswith("gitdir:")
|
||||||
git_worktree_path = setting.split(":", 1)[1].strip()
|
git_worktree_path = setting.split(":", 1)[1].strip()
|
||||||
|
|
||||||
|
# `gitdir` maybe be either relative or absolute depending on the
|
||||||
|
# behavior of the local copy of git, so only convert the path to
|
||||||
|
# relative if it needs to be converted.
|
||||||
|
if os.path.isabs(git_worktree_path):
|
||||||
# Some platforms (e.g. Windows) won't let us update dotgit in situ
|
# Some platforms (e.g. Windows) won't let us update dotgit in situ
|
||||||
# because of file permissions. Delete it and recreate it from scratch
|
# because of file permissions. Delete it and recreate it from
|
||||||
# to avoid.
|
# scratch to avoid.
|
||||||
platform_utils.remove(dotgit)
|
platform_utils.remove(dotgit)
|
||||||
# Use relative path from checkout->worktree & maintain Unix line endings
|
# Use relative path from checkout->worktree & maintain Unix line
|
||||||
# on all OS's to match git behavior.
|
# endings on all OS's to match git behavior.
|
||||||
with open(dotgit, "w", newline="\n") as fp:
|
with open(dotgit, "w", newline="\n") as fp:
|
||||||
print(
|
print(
|
||||||
"gitdir:",
|
"gitdir:",
|
||||||
os.path.relpath(git_worktree_path, self.worktree),
|
os.path.relpath(git_worktree_path, self.worktree),
|
||||||
file=fp,
|
file=fp,
|
||||||
)
|
)
|
||||||
# Use relative path from worktree->checkout & maintain Unix line endings
|
# Use relative path from worktree->checkout & maintain Unix line
|
||||||
# on all OS's to match git behavior.
|
# endings on all OS's to match git behavior.
|
||||||
with open(
|
with open(
|
||||||
os.path.join(git_worktree_path, "gitdir"), "w", newline="\n"
|
os.path.join(git_worktree_path, "gitdir"), "w", newline="\n"
|
||||||
) as fp:
|
) as fp:
|
||||||
|
@ -298,7 +298,7 @@ without iterating through the remaining projects.
|
|||||||
)
|
)
|
||||||
except (KeyboardInterrupt, WorkerKeyboardInterrupt):
|
except (KeyboardInterrupt, WorkerKeyboardInterrupt):
|
||||||
# Catch KeyboardInterrupt raised inside and outside of workers
|
# Catch KeyboardInterrupt raised inside and outside of workers
|
||||||
rc = rc or errno.EINTR
|
rc = errno.EINTR
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# Catch any other exceptions raised
|
# Catch any other exceptions raised
|
||||||
logger.error(
|
logger.error(
|
||||||
@ -306,7 +306,7 @@ without iterating through the remaining projects.
|
|||||||
type(e).__name__,
|
type(e).__name__,
|
||||||
e,
|
e,
|
||||||
)
|
)
|
||||||
rc = rc or getattr(e, "errno", 1)
|
rc = getattr(e, "errno", 1)
|
||||||
if rc != 0:
|
if rc != 0:
|
||||||
sys.exit(rc)
|
sys.exit(rc)
|
||||||
|
|
||||||
|
@ -821,6 +821,16 @@ later is required to fix a server side protocol bug.
|
|||||||
jobs = jobs_str(len(items))
|
jobs = jobs_str(len(items))
|
||||||
return f"{jobs} | {elapsed_str(elapsed)} {earliest_proj}"
|
return f"{jobs} | {elapsed_str(elapsed)} {earliest_proj}"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def InitWorker(cls):
|
||||||
|
# Force connect to the manager server now.
|
||||||
|
# This is good because workers are initialized one by one. Without this,
|
||||||
|
# multiple workers may connect to the manager when handling the first
|
||||||
|
# job at the same time. Then the connection may fail if too many
|
||||||
|
# connections are pending and execeeded the socket listening backlog,
|
||||||
|
# especially on MacOS.
|
||||||
|
len(cls.get_parallel_context()["sync_dict"])
|
||||||
|
|
||||||
def _Fetch(self, projects, opt, err_event, ssh_proxy, errors):
|
def _Fetch(self, projects, opt, err_event, ssh_proxy, errors):
|
||||||
ret = True
|
ret = True
|
||||||
|
|
||||||
@ -913,6 +923,7 @@ later is required to fix a server side protocol bug.
|
|||||||
# idle while other workers still have more than one job in
|
# idle while other workers still have more than one job in
|
||||||
# their chunk queue.
|
# their chunk queue.
|
||||||
chunksize=1,
|
chunksize=1,
|
||||||
|
initializer=self.InitWorker,
|
||||||
)
|
)
|
||||||
finally:
|
finally:
|
||||||
sync_event.set()
|
sync_event.set()
|
||||||
|
@ -737,8 +737,8 @@ Gerrit Code Review: https://www.gerritcodereview.com/
|
|||||||
pending = []
|
pending = []
|
||||||
for result in results:
|
for result in results:
|
||||||
project_idx, avail = result
|
project_idx, avail = result
|
||||||
if avail is None:
|
|
||||||
project = projects[project_idx]
|
project = projects[project_idx]
|
||||||
|
if avail is None:
|
||||||
logger.error(
|
logger.error(
|
||||||
'repo: error: %s: Unable to upload branch "%s". '
|
'repo: error: %s: Unable to upload branch "%s". '
|
||||||
"You might be able to fix the branch by running:\n"
|
"You might be able to fix the branch by running:\n"
|
||||||
@ -748,7 +748,7 @@ Gerrit Code Review: https://www.gerritcodereview.com/
|
|||||||
project.manifest.branch,
|
project.manifest.branch,
|
||||||
)
|
)
|
||||||
elif avail:
|
elif avail:
|
||||||
pending.append(result)
|
pending.append((project, avail))
|
||||||
return pending
|
return pending
|
||||||
|
|
||||||
with self.ParallelContext():
|
with self.ParallelContext():
|
||||||
|
Reference in New Issue
Block a user