From c0d9d1358e0ec671fae6c6a45e618fc03ed62dfe Mon Sep 17 00:00:00 2001 From: TheMythologist Date: Sun, 16 Nov 2025 12:30:14 +0800 Subject: [PATCH 1/3] Implement hands on hp-force-push --- hands_on/force_push.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 hands_on/force_push.py diff --git a/hands_on/force_push.py b/hands_on/force_push.py new file mode 100644 index 0000000..1d420f7 --- /dev/null +++ b/hands_on/force_push.py @@ -0,0 +1,19 @@ +from pathlib import Path +import shutil +from exercise_utils.github_cli import clone_repo, fork_repo + +__requires_git__ = True +__requires_github__ = True + +REPO_NAME = "samplerepo-things-force-push" +UPSTREAM_REPO = "git-mastery/samplerepo-things" +WORK_DIR = "things" + + +def download(verbose: bool): + work_dir = Path(WORK_DIR) + if work_dir.exists(): + shutil.rmtree(work_dir) + + fork_repo(UPSTREAM_REPO, REPO_NAME, verbose) + clone_repo(REPO_NAME, verbose, WORK_DIR) From 08fab94c9b930a3b8be28dbe61a153ed502c0aaa Mon Sep 17 00:00:00 2001 From: TheMythologist Date: Sun, 16 Nov 2025 13:13:53 +0800 Subject: [PATCH 2/3] Standardise fork names --- hands_on/force_push.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/hands_on/force_push.py b/hands_on/force_push.py index 1d420f7..79907ec 100644 --- a/hands_on/force_push.py +++ b/hands_on/force_push.py @@ -1,19 +1,13 @@ -from pathlib import Path -import shutil from exercise_utils.github_cli import clone_repo, fork_repo __requires_git__ = True __requires_github__ = True -REPO_NAME = "samplerepo-things-force-push" +REPO_NAME = "gitmastery-samplerepo-things" UPSTREAM_REPO = "git-mastery/samplerepo-things" WORK_DIR = "things" def download(verbose: bool): - work_dir = Path(WORK_DIR) - if work_dir.exists(): - shutil.rmtree(work_dir) - fork_repo(UPSTREAM_REPO, REPO_NAME, verbose) clone_repo(REPO_NAME, verbose, WORK_DIR) From 707dd418f335074d69f561d6a34372db6d54f213 Mon Sep 17 00:00:00 2001 From: TheMythologist Date: Sun, 23 Nov 2025 17:51:49 +0800 Subject: [PATCH 3/3] Change cloning workflow --- hands_on/force_push.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/hands_on/force_push.py b/hands_on/force_push.py index 79907ec..62b2c05 100644 --- a/hands_on/force_push.py +++ b/hands_on/force_push.py @@ -1,4 +1,7 @@ -from exercise_utils.github_cli import clone_repo, fork_repo +import os +from exercise_utils.cli import run_command +from exercise_utils.git import add_remote, remove_remote +from exercise_utils.github_cli import clone_repo, create_repo, get_github_username __requires_git__ = True __requires_github__ = True @@ -9,5 +12,14 @@ def download(verbose: bool): - fork_repo(UPSTREAM_REPO, REPO_NAME, verbose) - clone_repo(REPO_NAME, verbose, WORK_DIR) + create_repo(REPO_NAME, verbose) + clone_repo(UPSTREAM_REPO, verbose, WORK_DIR) + os.chdir(WORK_DIR) + remove_remote("origin", verbose) + + add_remote( + "origin", + f"https://github.com/{get_github_username(verbose)}/{REPO_NAME}", + verbose, + ) + run_command(["git", "push", "-u", "origin", "master"], verbose)