feat: default branch as config field

This commit is contained in:
张泊明518370910136 2025-03-22 17:14:25 -04:00
parent 643ce96ac5
commit d094d7a974
GPG Key ID: CA088E6D9284F870
4 changed files with 20 additions and 10 deletions

View File

@ -25,6 +25,7 @@ class Settings(BaseSettings):
# git
git_host: str = "ssh://git@focs.ji.sjtu.edu.cn:2222"
repos_dir: str = "./repos"
default_branch: str = "master"
# mattermost
mattermost_domain_name: str = "focs.ji.sjtu.edu.cn"

View File

@ -114,7 +114,7 @@ class Teapot:
def clone_all_repos(self) -> None:
for i, repo_name in enumerate(self.gitea.get_all_repo_names()):
logger.info(f"{i}, {self.gitea.org_name}/{repo_name} cloning...")
self.git.repo_clean_and_checkout(repo_name, "master")
self.git.repo_clean_and_checkout(repo_name, settings.default_branch)
def create_issue_for_repos(
self,

View File

@ -35,7 +35,10 @@ class Git:
logger.info(f"repos dir: {self.repos_dir}")
def clone_repo(
self, repo_name: str, branch: str = "master", auto_retry: bool = True
self,
repo_name: str,
branch: str = settings.default_branch,
auto_retry: bool = True,
) -> Optional[Repo]:
repo = None
repo_dir = os.path.join(self.repos_dir, repo_name)
@ -78,7 +81,7 @@ class Git:
*,
auto_retry: bool = True,
clean_git_lock: bool = False,
reset_target: str = "origin/master",
reset_target: str = f"origin/{settings.default_branch}",
) -> str:
repo_dir = os.path.join(self.repos_dir, repo_name)
repo = self.get_repo(repo_name)
@ -115,11 +118,17 @@ class Git:
sleep(retry_interval)
if retry_interval < 64:
retry_interval *= 2
elif "Remote branch master not found in upstream origin" in e.stderr:
elif (
f"Remote branch {settings.default_branch} not found in upstream origin"
in e.stderr
):
retry_interval = 0
logger.error(f"{repo_name} origin/master not found")
logger.error(
f"{repo_name} origin/{settings.default_branch} not found"
)
else:
raise
retry_interval = 0
logger.exception(e)
return repo_dir
def add_commit(

View File

@ -126,7 +126,7 @@ class Gitea:
repo_names.append(repo_name)
body = {
"auto_init": False,
"default_branch": "master",
"default_branch": settings.default_branch,
"name": repo_name,
"private": True,
"template": False,
@ -198,7 +198,7 @@ class Gitea:
self.org_name,
body={
"auto_init": False,
"default_branch": "master",
"default_branch": settings.default_branch,
"name": repo_name,
"private": True,
"template": False,
@ -236,7 +236,7 @@ class Gitea:
continue
try:
self.repository_api.repo_delete_branch_protection(
self.org_name, repo_name, "master"
self.org_name, repo_name, settings.default_branch
)
except ApiException as e:
if e.status != 404:
@ -249,7 +249,7 @@ class Gitea:
"block_on_official_review_requests": True,
"block_on_outdated_branch": True,
"block_on_rejected_reviews": True,
"branch_name": "master",
"branch_name": settings.default_branch,
"dismiss_stale_approvals": True,
"enable_approvals_whitelist": False,
"enable_merge_whitelist": False,