Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
42 changes: 42 additions & 0 deletions hands_on/sync_upstream.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import os
import sys
import shutil
from exercise_utils.cli import run_command, run_command_no_exit

__requires_git__ = True
__requires_github__ = True


def _get_full_repo_name(verbose: bool) -> str:
"""Get the full GitHub repository name for the authenticated user."""
output = run_command(["gh", "api", "user", "-q", ".login"], verbose)
username = output.strip() if output else ""
return f"{username}/{"samplerepo-finances"}"

def download(verbose: bool):
full_repo_name = _get_full_repo_name(verbose)
output = run_command_no_exit(["gh", "repo", "view", full_repo_name], verbose)

if output is not None:
print(
f"\nRepository 'https://github.com/{full_repo_name}' already exists on GitHub.\n"
"Please delete the existing fork before proceeding."
)
sys.exit(1)

if os.path.exists("samplerepo-finances"):
shutil.rmtree("samplerepo-finances")
Comment on lines +27 to +28
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might also want to check that the fork does not exist yet. If it does, we want to delete it. This is being discussed in #78. I would like if we are aligned on the approach of displaying a message to tell the user to delete the fork themselves, then re-running the fork command.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you so much, i have add the command to check it.


run_command([
"gh", "repo", "fork",
"https://github.com/git-mastery/samplerepo-finances",
"--clone",
"--remote"
], verbose)
Comment on lines +30 to +35
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like we ultimately want these to be util functions. I'm good keeping things this way for now since it's more effort to try to coordinate the changes. We'll need to track this as future work to de-duplicate common behavior @damithc


os.chdir("samplerepo-finances")

run_command([
"git", "remote", "add", "upstream",
"https://github.com/git-mastery/samplerepo-finances"
], verbose)