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
git_host: str = "ssh://git@focs.ji.sjtu.edu.cn:2222" git_host: str = "ssh://git@focs.ji.sjtu.edu.cn:2222"
repos_dir: str = "./repos" repos_dir: str = "./repos"
default_branch: str = "master"
# mattermost # mattermost
mattermost_domain_name: str = "focs.ji.sjtu.edu.cn" mattermost_domain_name: str = "focs.ji.sjtu.edu.cn"

View File

@ -114,7 +114,7 @@ class Teapot:
def clone_all_repos(self) -> None: def clone_all_repos(self) -> None:
for i, repo_name in enumerate(self.gitea.get_all_repo_names()): for i, repo_name in enumerate(self.gitea.get_all_repo_names()):
logger.info(f"{i}, {self.gitea.org_name}/{repo_name} cloning...") 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( def create_issue_for_repos(
self, self,

View File

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

View File

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