Skip to content

Conversation

@oadultradeepfield
Copy link

Exercise Discussion

This PR will close #56. Below is a more detailed description of the changes along with implementation notes:

  1. Added an add_origin function in exercise_utils/git.py. This might be helpful in the future. I noticed that there is already a remove_remote implementation, and add_origin is intended to be used in a similar way.
  2. To help ensure that the remote repository gitmastery-things is created successfully across multiple attempts, I added a check to delete any existing remote repository with the same name. Please note that this requires setting up delete access for the GitHub CLI via gh auth refresh -h github.com -s delete_repo. I also realised that the GitHub CLI needs to be configured beforehand for this part of the hands-on to work.

Note: The download script tested via test-download.sh works fine. Here is the remote repo I managed to create.

Checklist

  • If you require a new remote repository on the Git-Mastery organization, have you created a request for it?
  • Have you written unit tests using repo-smith to validate the exercise grading scheme?
  • Have you tested the download script using test-download.sh?
  • Have you verified that this exercise does not already exist or is not currently in review?
  • Did you introduce a new grading mechanism that should belong to git-autograder?
  • Did you introduce a new dependency that should belong to app?

Copy link
Member

@woojiahao woojiahao left a comment

Choose a reason for hiding this comment

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

This isn't an easy hands-on to implement because we have remote integration. Left a couple of comments on structuring the hands-on!

Please note that this requires setting up delete access for the GitHub CLI via gh auth refresh -h github.com -s delete_repo.

@damithc are we able to include this in our setup guide if it's not yet included?

I also realised that the GitHub CLI needs to be configured beforehand for this part of the hands-on to work.

This is already supported when you do __require_github__ = True: https://git-mastery.github.io/developers/docs/architecture/hands-on-structure/#file-structure

@oadultradeepfield
Copy link
Author

Thanks for the super-detailed comments! I’ll make the corresponding changes later today.

This is already supported when you do require_github = True: https://git-mastery.github.io/developers/docs/architecture/hands-on-structure/#file-structure

Sorry for the confusion, what I meant was that students need to have the GitHub CLI installed for the gh commands to work. I think it’s just an issue on my device since I haven’t used it before 😅.

@damithc
Copy link
Contributor

damithc commented Oct 26, 2025

Please note that this requires setting up delete access for the GitHub CLI via gh auth refresh -h github.com -s delete_repo.

@damithc are we able to include this in our setup guide if it's not yet included?

Given having to delete a remote repo is rare, instead of deleting the repo automatically, a safer alternative is to abort with a message asking the student to delete the repo and run the download operation again after doing so.
WDYT?

@oadultradeepfield
Copy link
Author

Given having to delete a remote repo is rare, instead of deleting the repo automatically, a safer alternative is to abort with a message asking the student to delete the repo and run the download operation again after doing so. WDYT?

I agree with this approach! If I understand correctly, this would mean the Python script in this repo should raise exceptions that the app’s download.py can then catch and print user-friendly messages, right?

@woojiahao
Copy link
Member

woojiahao commented Oct 30, 2025

@damithc @oadultradeepfield afaik, deleting a repository is actually also used when we run gitmastery progress sync off. So we might need this piece of instruction regardless.

I think that it's worth

(1) Figuring out if we need to include delete_repo permission on a fresh install of gh (seems like it?)
(2) Either (a) adding a prompt to setup the delete_repo permission when we don't detect it or (b) Stopping and prompting users to delete it after.

I think (2) is a better user experience. What do you guys think?

Copy link
Member

@woojiahao woojiahao left a comment

Choose a reason for hiding this comment

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

Thank you for the quick turnaround @oadultradeepfield . I left some extra comments, but we will need to figure out on what to do with the delete first

@damithc
Copy link
Contributor

damithc commented Nov 2, 2025

(1) Figuring out if we need to include delete_repo permission on a fresh install of gh (seems like it?) (2) Either (a) adding a prompt to setup the delete_repo permission when we don't detect it or (b) Stopping and prompting users to delete it after.

I think (2) is a better user experience. What do you guys think?

@oadultradeepfield @woojiahao I'm OK with 2(b), given deleting repos is rare.

@oadultradeepfield
Copy link
Author

@woojiahao @damithc Given that we’re likely proceeding with 2(b), may I confirm if the correct implementation is to raise an exception in this hands-on Python script? So far, I haven’t seen any hands-on printing any messages (though I might have missed it), so my understanding is that another part of the codebase (or a different repository) handles that.

@damithc
Copy link
Contributor

damithc commented Nov 3, 2025

@woojiahao @damithc Given that we’re likely proceeding with 2(b), may I confirm if the correct implementation is to raise an exception in this hands-on Python script? So far, I haven’t seen any hands-on printing any messages (though I might have missed it), so my understanding is that another part of the codebase (or a different repository) handles that.

@oadultradeepfield let's wait for @woojiahao's input on this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Hands-On Discussion] T2L5/hp-populate-remote (Pushing a local repo to an empty emote repo)

3 participants