git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 0/3] Add support for per-remote and per-namespace SSH options

From
Wesley <wesleys@opperschaap.net>
Date
Mar 27, 2026, 16:49 UTC
Message-ID
<09c5fe7d-8379-4f68-bf1c-9869e2924cb8@opperschaap.net>
In-Reply-To
<xmqqbjg9mex2.fsf@gitster.g>
On 3/27/26 12:10, Junio C Hamano wrote:
> I somehow thought that this practice is so widespread that it was
> one of the few first things any new people learn to do, but perhaps
> we do not have a good documentation coverage?

As said before it is weird thing to configure a global ssh configuration just for git transport. It doesn't make much sense.

The problem with ssh_config usage is that you need to change your ssh config, which is machine global, not just git. And not portable across teams with configurations committed to git. Myrepos is a good example of this. My former employer had this and I know the Perl metacpan project also uses mysrepos. Changing every URL dynamically in committed configs isn't really a nice ask.

The alternative is using core.sshCommand to inject the correct keys, but you must apply logic there when you have multiple accounts or forges. Which is what I initially did with a zsh-scripts. Which is why I ported that logic to git itself, I thought it would be beneficial to have an easy way to maintain sshIdentityFile settings.

In addition, for core.sshCommand to work you must use the full openssh command rather than just adding some options to it. Which is an added benefit of the proposed changes.

This change makes key selection possible without too much trouble on the users side with hacks to ssh_config. You can just tell git to use an identity based on the remote. Solve a git identify problem in the git config, fix the problem in the correct domain. We also store email credentials in gitconfigs, why would an ssh identify file be treated different?

> In any case, I do not think these network/transport specific
> configuration would hardly belong to "core".

I'm happy to move it elsewhere, as said, I chose core because core.sshCommand. As for the name: "ssh" or "transport", I'm not certain what is the best option is.

Cheers, Wesley

-- 
Wesley

Why not both?
Previous: Junio C HamanoNext: brian m. carlson
Message 17 of 24 in “Add support for per-remote and per-namespace SSH options”
  1. 0/3 Add support for per-remote and per-namespace SSH optionsWesley Schwengle, Mar 26, 2026
  2. 1/3 connect: Rename name to command in connect_git()Wesley Schwengle, Mar 26, 2026
  3. Jeff KingMar 27, 2026
  4. WesleyMar 28, 2026
  5. Jeff KingMar 28, 2026
  6. WesleyMar 28, 2026
  7. 2/3 connect: Add transport->remote->name to git_connect()Wesley Schwengle, Mar 26, 2026
  8. Jeff KingMar 27, 2026
  9. 3/3 connect: Add support for per-remote and per-namespace SSH optionsWesley Schwengle, Mar 26, 2026
  10. Jeff KingMar 27, 2026
  11. WesleyMar 28, 2026
  12. Jeff KingMar 28, 2026
  13. WesleyMar 28, 2026
  14. Johannes SixtMar 27, 2026
  15. WesleyMar 27, 2026
  16. Junio C HamanoMar 27, 2026
  17. WesleyMar 27, 2026
  18. brian m. carlsonMar 27, 2026
  19. WesleyMar 28, 2026
  20. Johannes SixtMar 28, 2026
  21. WesleyMar 28, 2026
  22. Ben KnobleMar 29, 2026
  23. brian m. carlsonMar 27, 2026
  24. Junio C HamanoMar 27, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.