Giter VIP home page Giter VIP logo

Comments (4)

iamnoah avatar iamnoah commented on July 25, 2024 1

@mpdude my apologies, I seem to have been running against v0.5.0. The URL format in v0.5.3 seems to resolve everything for me without modifications. Thanks!

from ssh-agent.

mpdude avatar mpdude commented on July 25, 2024

Thank you for raising this issue! First, let me say that I have no experience with go at all.

I have tried to find some documentation on how go finds and loads private modules and I came across this https://golang.org/ref/mod#vcs-find:

If the module path has a VCS qualifier (one of .bzr, .fossil, .git, .hg, .svn) at the end of a path component, the go command will use everything up to that path qualifier as the repository URL. For example, for the module example.com/foo.git/bar, the go command downloads the repository at example.com/foo.git using git, expecting to find the module in the bar subdirectory. The go command will guess the protocol to use based on the protocols supported by the version control tool.

Also, a bit further down, it says:

repo-url is the repository's URL. If the URL does not include a scheme (either because the module path has a VCS qualifier or because the tag lacks a scheme), the go command will try each protocol supported by the version control system. For example, with Git, the go command will try https:// then git+ssh://. Insecure protocols (like http:// and git://) may only be used if the module path is matched by the GOINSECURE environment variable.

This makes me wonder if you could specify your module slightly different, including the .git extension, to make it work without the extra configuration?

from ssh-agent.

iamnoah avatar iamnoah commented on July 25, 2024

I honestly am not entirely sure what that is referring to, but including the scheme is not valid in go.mod. I can't go get ssh://.. without getting go get: malformed module path

There are some hardcoded assumptions in the go tooling about the github.com namespace that cause it to default to git over https. I could be wrong and there is an easier workaround, but the only solution I have seen is to use insteadOf gitconfig to rewrite the URL.

from ssh-agent.

mpdude avatar mpdude commented on July 25, 2024

ssh-agent/index.js

Lines 53 to 68 in 5f066a3

const parts = key.match(/\bgithub\.com[:/]([_.a-z0-9-]+\/[_.a-z0-9-]+)/i);
if (!parts) {
console.log(`Comment for key '${key}' does not match GitHub URL pattern. Not treating it as a GitHub deploy key.`);
return;
}
const sha256 = crypto.createHash('sha256').update(key).digest('hex');
const ownerAndRepo = parts[1].replace(/\.git$/, '');
fs.writeFileSync(`${homeSsh}/key-${sha256}`, key + "\n", { mode: '600' });
child_process.execSync(`git config --global --replace-all url."git@key-${sha256}.github.com:${ownerAndRepo}".insteadOf "https://github.com/${ownerAndRepo}"`);
child_process.execSync(`git config --global --add url."git@key-${sha256}.github.com:${ownerAndRepo}".insteadOf "[email protected]:${ownerAndRepo}"`);
child_process.execSync(`git config --global --add url."git@key-${sha256}.github.com:${ownerAndRepo}".insteadOf "ssh://[email protected]/${ownerAndRepo}"`);

Doesn't that generate the insteadOf = config value without a trailing .git as you suggested?

from ssh-agent.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.