-
Notifications
You must be signed in to change notification settings - Fork 5.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extract concepts of local and remote git repos #4900
Conversation
This introduces a concept of a Git object that is asked for git operations (only Push for now) from the context of a command. Instead of stubbing out the `git push` command, the call to `Push()` itself is stubbed via mock object generated by mockery. Additionally, this introduces tests that exercise the logic of shelling out to `git push`, which is now rewritten to ensure synchronous I/O.
The `browse` command queries the GitClient object it received for information like "LastCommit" and "PathPrefix". Depending on the `--repo` flag, the repository queried will be either the local git repository (normal case) or the remote git repository via the GitHub API (in case of the repo override). Each git query method now supports passing a `context.Context` object to support cancellation at a lower level.
Hey thanks for moving forward with the prototype, I'm looking forward to seeing how this turns out. Just in case you didn't see it, I suggested that the Maybe this can be added into this pr for a better experience, especially now that the last commit can come from two different sources. |
Ah, thanks for reminding me. I missed that comment. I will make sure to address it in this PR 👍 |
i like this idea~ thanks for working on it |
Superseded by #6354 |
The
browse
command queries the GitClient object it received for information like "LastCommit" and "PathPrefix". Depending on the--repo
flag, the repository queried will be either the local git repository (normal case) or the remote git repository via the GitHub API (in case of the--repo
override).This is a followup to #4845 by @bchadwic with the goal of extracting and exposing concepts like a "local git repo" and "remote git repo" behind a unified interface. This will be useful for all commands that support the
--repo
override and need access to git information.Design goals:
context.Context
object to support cancellation at a lower level.TODO:
git.*WithPath()
methodsremoterepo.Client
gains access to*http.Client
andghrepo.Interface
- ideally it wouldn't rely on passing funcs around anymoregit.*
methods as deprecated - all future queries should go through an instantiated client