All of lore.kernel.org
 help / color / mirror / Atom feed
From: "SZEDER Gábor" <szeder.dev@gmail.com>
To: Jeffrey Walton <noloader@gmail.com>
Cc: Git List <git@vger.kernel.org>
Subject: Re: How to see command line arguments passed to program in core.sshcommand?
Date: Mon, 23 Sep 2019 20:38:06 +0200	[thread overview]
Message-ID: <20190923183806.GA2637@szeder.dev> (raw)
In-Reply-To: <CAH8yC8mT+rArXBKPb1w2c74ZMRWZsc75x=52fmcpGuE6NBOhCQ@mail.gmail.com>

On Mon, Sep 23, 2019 at 01:18:39PM -0400, Jeffrey Walton wrote:
> (A) core.sshCommand:
> 
>     sshcommand = "C:\\Users\\Jeffrey Walton\\Desktop\\test_tunnel.exe"
> 
> Result:
> 
> $ GIT_TRACE=1 git clone ssh://jeffrey.walton@example.com:22480/main
> ...
> Cloning into 'main'...
> 11:44:32.192382 run-command.c:663       trace: run_command: unset
> GIT_DIR; 'C:\Users\Jeffrey Walton\Desktop\test_tunnel.exe' -p 22480
> jeffrey.walton@example.com 'git-upload-pack '\''/main'\'''
> C:\Users\Jeffrey Walton\Desktop\test_tunnel.exe: C:UsersJeffrey:
> command not found
> fatal: Could not read from remote repository.
> 
> =====
> 
> (B) core.sshCommand:
> 
>     sshcommand = "C:\\\\Users\\\\Jeffrey Walton\\\\Desktop\\\\test_tunnel.exe"
> 
> Result:
> 
> $ GIT_TRACE=1 git clone ssh://jeffrey.walton@example.com:22480/main
> ...
> Cloning into 'main'...
> 11:45:59.161132 run-command.c:663       trace: run_command: unset
> GIT_DIR; 'C:\\Users\\Jeffrey Walton\\Desktop\\test_tunnel.exe' -p
> 22480 jeffrey.walton@example.com 'git-upload-pack '\''/main'\'''
> C:\\Users\\Jeffrey Walton\\Desktop\\test_tunnel.exe: C:\Users\Jeffrey:
> No such file or directory
> fatal: Could not read from remote repository.
> 
> =====
> 
> (C) core.sshCommand:
> 
>     sshcommand = "C:\\\\Users\\\\JEFFRE~1\\\\Desktop\\\\TEST_T~1.EXE"
> 
> Result:
> 
> $ GIT_TRACE=1 git clone ssh://jeffrey.walton@example.com:22480/main
> ...
> Cloning into 'main'...
> 11:47:49.973632 run-command.c:663       trace: run_command: unset
> GIT_DIR; 'C:\\Users\\JEFFRE~1\\Desktop\\TEST_T~1.EXE' -p 22480
> jeffrey.walton@example.com 'git-upload-pack '\''/main'\'''
> Arg 1: 'C:\Users\JEFFRE~1\Desktop\TEST_T~1.EXE'
> Arg 2: '-p'
> fArg 3: '22480'
> atal: pArg 4: 'jeffrey.walton@example.com'
> rotocol error:Arg 5: 'git-upload-pack '/main''
>  bad line length character: Test
> 
> =====
> 
> (A) is stripping quotes but they are needed for Windows long file
> names. (A) also seems to be double-escaping slashes.
> 
> (B) is also stripping quotes. (B) works around the double-escaping slashes.
> 
> (C) works around stripping quotes by using short filenames. (C) also
> works around the double-escaping slashes.
> 
> I did not find a git-path or git-filename man page. Most of this
> appear undocumented (to me).
> 
> From a usability point of view, Windows long filenames have been
> around since at least 1995. This is how Windows users expect things to
> work for the last couple of decades:
> 
>     shcommand = "C:\Users\Jeffrey Walton\Desktop\test_tunnel.exe"
> 
> or
> 
>     shcommand = "C:\\Users\\Jeffrey Walton\\Desktop\\test_tunnel.exe"
> 
> In contrast, this would not need quotes:
> 
>     shcommand = C:\Users\Jeff\Desktop\test_tunnel.exe

Git's configuration file format allows optional double quotes around
the values of configuration variables.  Consequently all double quotes
in your examples above are treated as part of the file format and are
removed; you have to escape them if you want to keep them:

  [foo]
        one = "inside double quotes"
        two = \"need those double quotes\"
        three = "\"need these double quotes, too\""

  $ git config --get foo.one
  inside double quotes
  $ git config --get foo.two
  "need those double quotes"
  $ git config --get foo.three
  "need these double quotes, too"


> If there is extra work to be done, then I think the program should do
> it, not the user. I believe Git should preserve the quotes in a long
> filename.
> 
> A fallback is to call GetShortPathName, but it is an incomplete
> remediation because short name aliases can be turned off. If short
> filenames were disabled on my system then the workaround would not
> work.
> 
> Jeff

  reply	other threads:[~2019-09-23 18:38 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-23  3:17 How to see command line arguments passed to program in core.sshcommand? Jeffrey Walton
2019-09-23  9:24 ` SZEDER Gábor
2019-09-23 17:18   ` Jeffrey Walton
2019-09-23 18:38     ` SZEDER Gábor [this message]
2019-09-24 17:12 ` Derrick Stolee

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190923183806.GA2637@szeder.dev \
    --to=szeder.dev@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=noloader@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.