From aaa5f3c0764835566c45af2e44ea104cc1c7a413 Mon Sep 17 00:00:00 2001 From: busya Date: Tue, 17 Mar 2026 14:58:29 +0300 Subject: [PATCH] fix: add default_branch parameter to GitService.init_repo() Fixed error: GitService.init_repo() got an unexpected keyword argument 'default_branch' The init_repository route was passing default_branch to GitService.init_repo(), but the method signature didn't accept this parameter. Changes: - Added default_branch: Optional[str] = None parameter to init_repo() method - Updated clone operation to use specified default branch when provided - Updated method documentation to reflect the new parameter This allows repositories to be initialized with a specific default branch as configured in GitServerConfig, while maintaining backward compatibility. --- backend/src/services/git_service.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/backend/src/services/git_service.py b/backend/src/services/git_service.py index a5147ef9..85da63ae 100644 --- a/backend/src/services/git_service.py +++ b/backend/src/services/git_service.py @@ -319,12 +319,13 @@ class GitService: # @PARAM: remote_url (str) # @PARAM: pat (str) - Personal Access Token for authentication. # @PARAM: repo_key (Optional[str]) - Slug-like key for deterministic folder naming on first init. + # @PARAM: default_branch (Optional[str]) - Default branch name to use (defaults to 'main'). # @PRE: dashboard_id is int, remote_url is valid Git URL, pat is provided. # @POST: Repository is cloned or opened at the local path. # @RETURN: Repo - GitPython Repo object. # @RELATION: CALLS -> [GitService._get_repo_path] # @RELATION: CALLS -> [GitService._ensure_gitflow_branches] - def init_repo(self, dashboard_id: int, remote_url: str, pat: str, repo_key: Optional[str] = None) -> Repo: + def init_repo(self, dashboard_id: int, remote_url: str, pat: str, repo_key: Optional[str] = None, default_branch: Optional[str] = None) -> Repo: with belief_scope("GitService.init_repo"): self._ensure_base_path_exists() repo_path = self._get_repo_path(dashboard_id, repo_key=repo_key or str(dashboard_id)) @@ -354,7 +355,11 @@ class GitService: return repo logger.info(f"[init_repo][Action] Cloning {remote_url} to {repo_path}") - repo = Repo.clone_from(auth_url, repo_path) + # Use default_branch if specified, otherwise let GitPython use the remote's default + clone_kwargs = {} + if default_branch: + clone_kwargs['branch'] = default_branch + repo = Repo.clone_from(auth_url, repo_path, **clone_kwargs) self._ensure_gitflow_branches(repo, dashboard_id) return repo # [/DEF:backend.src.services.git_service.GitService.init_repo:Function]