Não consigo clonar um repositório Git via HTTPS que tenha novas linhas em seu URL:
/tmp/x $ git clone 'https://forge.lindenii.runxiyu.org/lindenii/forge/:/repos/name%0Ahas%0Anewlines/'
Cloning into 'name%0Ahas%0Anewlines'...
warning: url contains a newline in its path component: https://forge.lindenii.runxiyu.org/lindenii/forge/:/repos/name%0Ahas%0Anewlines/
fatal: credential url cannot be parsed: https://forge.lindenii.runxiyu.org/lindenii/forge/:/repos/name%0Ahas%0Anewlines/
fatal: remote helper 'https' aborted session
/tmp/x $ git clone $'https://forge.lindenii.runxiyu.org/lindenii/forge/:/repos/name\nhas\nnewlines/'
Cloning into 'name has newlines'...
warning: url contains a newline in its path component: https://forge.lindenii.runxiyu.org/lindenii/forge/:/repos/name
has
newlines/
fatal: credential url cannot be parsed: https://forge.lindenii.runxiyu.org/lindenii/forge/:/repos/name
has
newlines/
fatal: remote helper 'https' aborted session
Mas eu poderia fazer isso via SSH:
/tmp/x $ git clone $'ssh://forge.lindenii.runxiyu.org/lindenii/forge/:/repos/name\nhas\nnewlines/'
Cloning into 'name has newlines'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
Receiving objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
/tmp/x $ git clone 'ssh://forge.lindenii.runxiyu.org/lindenii/forge/:/repos/name%0Ahas%0Anewlines/'
Cloning into 'name%0Ahas%0Anewlines'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (3/3), done.
Como posso fazer com que ele seja clonado corretamente por HTTPS, onde o caminho contém novas linhas?
Acho que você não consegue.
Há uma verificação explícita em credentials.c para isso. A mensagem de commit explica...
Acessar um repositório via HTTP ou HTTPS pode exigir um nome de usuário e senha. Para evitar que você tenha que digitar isso toda vez, o Git armazenará suas credenciais para você. O Git também definiu um protocolo para "auxiliares de credenciais" para que o Git pudesse usar um keychain, gerenciador de credenciais ou gerenciador de segredos existentes.
Como o protocolo de credenciais foi projetado para ser genérico, eles optaram por mantê-lo simples e evitar caracteres problemáticos, como novas linhas, que podem interromper o armazenamento de credenciais.
O Git não armazena credenciais SSH, ele deixa o ssh-agent cuidar disso, então não há problema com novas linhas no SSH.
Você terá que mudar o caminho ou usar SSH ou configurar um proxy que remova as quebras de linha. Eu recomendaria mudar o caminho, já que quebras de linha em caminhos tendem a causar estragos.