diff --git a/app/commands/download.py b/app/commands/download.py index 603ef63..2ef63a5 100644 --- a/app/commands/download.py +++ b/app/commands/download.py @@ -214,7 +214,7 @@ def setup_exercise_folder( info("You already have a fork, deleting it") delete_repo(fork_name) info("Creating fork of exercise repository") - fork(exercise_repo, fork_name) + fork(exercise_repo, fork_name, config.exercise_repo.fork_all_branches) info("Creating clone of your fork") clone_with_custom_name( f"{username}/{fork_name}", config.exercise_repo.repo_name diff --git a/app/configs/exercise_config.py b/app/configs/exercise_config.py index ce18e13..0dd7af1 100644 --- a/app/configs/exercise_config.py +++ b/app/configs/exercise_config.py @@ -16,6 +16,7 @@ class ExerciseRepoConfig: repo_name: str repo_title: Optional[str] create_fork: Optional[bool] + fork_all_branches: Optional[bool] init: Optional[bool] exercise_name: str @@ -72,6 +73,7 @@ def read(cls: Type[Self], path: Path, cds: int) -> Self: repo_name=exercise_repo["repo_name"], repo_title=exercise_repo["repo_title"], create_fork=exercise_repo["create_fork"], + fork_all_branches=exercise_repo["fork_all_branches"], init=exercise_repo["init"], ), downloaded_at=None, diff --git a/app/utils/github_cli.py b/app/utils/github_cli.py index 9b708f3..21abff7 100644 --- a/app/utils/github_cli.py +++ b/app/utils/github_cli.py @@ -71,18 +71,18 @@ def get_repo_https_url(repo: str) -> Optional[str]: return None -def fork(repository_name: str, fork_name: str) -> None: - run( - [ - "gh", - "repo", - "fork", - repository_name, - "--default-branch-only", - "--fork-name", - fork_name, - ], - ) +def fork(repository_name: str, fork_name: str, all_branches: bool | None = False) -> None: + fork_command = [ + "gh", + "repo", + "fork", + repository_name, + "--fork-name", + fork_name, + ] + if all_branches == None or not all_branches: + fork_command.append("--default-branch-only") + run(fork_command) def clone(repository_name: str) -> None: