Skip to content
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

Add Git::URL .parse and .clone_to methods #575

Merged
merged 1 commit into from Apr 22, 2022
Merged

Add Git::URL .parse and .clone_to methods #575

merged 1 commit into from Apr 22, 2022

Conversation

jcouball
Copy link
Member

Your checklist for this pull request

🚨Please review the guidelines for contributing to this repository.

  • Ensure all commits include DCO sign-off.
  • Ensure that your contributions pass unit testing.
  • Ensure that your contributions contain documentation if applicable.

Description

In order to address issue #565, we have to figure out where git clone cloned a repository to.

There are two ways that come to mind:

  1. Scrape the output of the git clone command
  2. Figure out the directory based on the git URL passed to the clone command

Scraping the output is questionable because of encoding issues, terminal setup issues, etc. Some testing confirms this.

Attempting to parse the URL also has it's potential issues: parsing all the URL types in the same way that Git does will be difficult to get right.

This PR assumes we will go with parsing the URL and introduces two methods: Git::URL.parse and Git::URL.clone_to.

The parse method takes a URL as a string and returns a URI object representing the parsed URL.

The clone_to method takes a URL as a string and returns the directory that git will clone to for that URL.

@jcouball jcouball force-pushed the git_url_parse branch 2 times, most recently from b809aaf to 92b9960 Compare April 21, 2022 15:27
@jcouball jcouball changed the title Add Git::URL parse and clone_to methods Add Git::URL #parse and #clone_to methods Apr 21, 2022
@jcouball jcouball changed the title Add Git::URL #parse and #clone_to methods Add Git::URL .parse and .clone_to methods Apr 21, 2022
Signed-off-by: James Couball <jcouball@yahoo.com>
Copy link

@frankthrock frankthrock left a comment

Choose a reason for hiding this comment

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

Looks great! Thanks!

@jcouball jcouball merged commit 13471d7 into master Apr 22, 2022
@jcouball jcouball deleted the git_url_parse branch April 22, 2022 00:22
p-mongo pushed a commit to p-mongodb/ruby-git that referenced this pull request May 27, 2022
…' into mine

* p/diff-submodule: (36 commits)
  Support --submodule option to git diff.
  Support the --all option for git fetch (ruby-git#583)
  Workaround to get JRuby build working (ruby-git#582)
  Update README.md (ruby-git#580)
  Make the directory param to Git.clone optional (ruby-git#578)
  Make Git::URL.clone_to handle cloning to bare and mirror repos (ruby-git#577)
  Add Git::URL #parse and #clone_to methods (ruby-git#575)
  Use the head version of yard (ruby-git#573)
  Release v1.11.0
  Supress unneeded test output (ruby-git#570)
  Add support for fetch options "--force/-f" and "--prune-tags/-P". (ruby-git#563)
  Fix bug when grepping lines that contain numbers surrounded by colons (ruby-git#566)
  remove from maintainer (ruby-git#567)
  Address command line injection in Git::Lib#fetch
  Release v1.10.2 (ruby-git#561)
  Add create-release, setup, and console dev scripts (ruby-git#560)
  Store tempfile objects to prevent deletion during tests (ruby-git#555)
  Release v1.10.1 (ruby-git#553)
  Properly escape double quotes in shell commands on Windows (ruby-git#552)
  Properly unescape diff paths (ruby-git#504)
  ...

* p/set-url-push: (36 commits)
  Add :push option to remote_set_url.
  Support the --all option for git fetch (ruby-git#583)
  Workaround to get JRuby build working (ruby-git#582)
  Update README.md (ruby-git#580)
  Make the directory param to Git.clone optional (ruby-git#578)
  Make Git::URL.clone_to handle cloning to bare and mirror repos (ruby-git#577)
  Add Git::URL #parse and #clone_to methods (ruby-git#575)
  Use the head version of yard (ruby-git#573)
  Release v1.11.0
  Supress unneeded test output (ruby-git#570)
  Add support for fetch options "--force/-f" and "--prune-tags/-P". (ruby-git#563)
  Fix bug when grepping lines that contain numbers surrounded by colons (ruby-git#566)
  remove from maintainer (ruby-git#567)
  Address command line injection in Git::Lib#fetch
  Release v1.10.2 (ruby-git#561)
  Add create-release, setup, and console dev scripts (ruby-git#560)
  Store tempfile objects to prevent deletion during tests (ruby-git#555)
  Release v1.10.1 (ruby-git#553)
  Properly escape double quotes in shell commands on Windows (ruby-git#552)
  Properly unescape diff paths (ruby-git#504)
  ...
@jcouball jcouball mentioned this pull request Aug 18, 2022
3 tasks
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.

None yet

2 participants