; include only if a remote with the given URL exists (note
; that such a URL may be provided later in a file or in a
; file read after this file is read, as seen in this example)
[includeIf "hasconfig:remote.*.url:https://example.com/\*"]
path = foo.inc
[remote "origin"]
url = https://example.com/git*The reason for doing it by location is probably because my directory structure for projects look something like this:
/home/user/projects/organization/project
so github.com/victorb/neat-project would go into /home/user/projects/victor/neat-project
So my solution is tailored to that structure I suppose :)
At home (I mean a personal box I for personal project and some other public contributions), my directory structure is like:
~/sources/forge/organisation/project
where `sources` has the same meaning as your `/home/user/projects` ; and your example will end up here to ~/sources/github.com/victorb/neat-project
The structure used has some great influence on solution adopted I think :)But how could I also select the config for an initial clone of a repo based on the repository address?
Say my IdentityKey that I use for regular ssh is also associated with GH user foo, and then I have the above gitconfig to use a different key associated with GH user bar under certain directories. It's still possible that ssh will try the IdentityKey before the `-i` key when I do git operations under those directories, which means GH will identify me as user foo anyway.
I'm not sure what order ssh uses to sort the union, if any, but at least in my case it seems to always use the IdentityKey before the `-i` key even though it prints them in the opposite order initially (according to `-vvvv`).
And no, `-o IdentitiesOnly=yes` doesn't affect this behavior.
Main/default config (~/.gitconfig):
Then in .gitconfig-user-{a,b}: Or, even more separation, create separate users/accounts on the computers you use.