feat: clean git lock file for joj3
This commit is contained in:
parent
78b97adec2
commit
ebf7e04282
|
@ -264,7 +264,9 @@ def joj3_scoreboard(
|
|||
)
|
||||
with FileLock(lock_file_path, timeout=settings.joj3_lock_file_timeout).acquire():
|
||||
logger.info("file lock acquired")
|
||||
repo_path = tea.pot.git.repo_clean_and_checkout(repo_name, "grading")
|
||||
repo_path = tea.pot.git.repo_clean_and_checkout(
|
||||
repo_name, "grading", clean_git_lock=True
|
||||
)
|
||||
repo: Repo = tea.pot.git.get_repo(repo_name)
|
||||
if "grading" not in repo.remote().refs:
|
||||
logger.error(
|
||||
|
@ -344,7 +346,9 @@ def joj3_failed_table(
|
|||
)
|
||||
with FileLock(lock_file_path, timeout=settings.joj3_lock_file_timeout).acquire():
|
||||
logger.info("file lock acquired")
|
||||
repo_path = tea.pot.git.repo_clean_and_checkout(repo_name, "grading")
|
||||
repo_path = tea.pot.git.repo_clean_and_checkout(
|
||||
repo_name, "grading", clean_git_lock=True
|
||||
)
|
||||
repo: Repo = tea.pot.git.get_repo(repo_name)
|
||||
if "grading" not in repo.remote().refs:
|
||||
logger.error(
|
||||
|
@ -555,7 +559,9 @@ def joj3_all(
|
|||
retry_interval = 1
|
||||
git_push_ok = False
|
||||
while not git_push_ok:
|
||||
repo_path = tea.pot.git.repo_clean_and_checkout(repo_name, "grading")
|
||||
repo_path = tea.pot.git.repo_clean_and_checkout(
|
||||
repo_name, "grading", clean_git_lock=True
|
||||
)
|
||||
repo: Repo = tea.pot.git.get_repo(repo_name)
|
||||
if "grading" not in repo.remote().refs:
|
||||
logger.error(
|
||||
|
|
|
@ -72,7 +72,11 @@ class Git:
|
|||
return self.clone_repo(repo_name)
|
||||
|
||||
def repo_clean_and_checkout(
|
||||
self, repo_name: str, checkout_dest: str, auto_retry: bool = True
|
||||
self,
|
||||
repo_name: str,
|
||||
checkout_dest: str,
|
||||
auto_retry: bool = True,
|
||||
clean_git_lock: bool = False,
|
||||
) -> str:
|
||||
repo_dir = os.path.join(self.repos_dir, repo_name)
|
||||
repo = self.get_repo(repo_name)
|
||||
|
@ -81,6 +85,10 @@ class Git:
|
|||
retry_interval = 2
|
||||
while retry_interval and auto_retry:
|
||||
try:
|
||||
if clean_git_lock and os.path.exists(
|
||||
os.path.join(repo_dir, ".git/index.lock")
|
||||
):
|
||||
os.remove(os.path.join(repo_dir, ".git/index.lock"))
|
||||
repo.git.fetch("--tags", "--all", "-f")
|
||||
repo.git.reset("--hard", "origin/master")
|
||||
repo.git.clean("-d", "-f", "-x")
|
||||
|
|
Loading…
Reference in New Issue
Block a user