RE: [Patch 1/3] connect.c: add nonstopssh variant to the sshVariant set.
From: Randall S. Becker <hidden>
Date: 2021-06-04 19:30:07
On May 10, 2021 11:24 AM, I wrote:
On April 30, 2021 1:32 PM, I wrote:quoted
Subject: RE: [Patch 1/3] connect.c: add nonstopssh variant to the sshVariant set. On April 30, 2021 1:17 PM, Elijah Newren wrote:quoted
On Fri, Apr 30, 2021 at 9:38 AM Randall S. Becker [off-list ref] wrote:quoted
On April 30, 2021 12:25 PM, Elijah Newren wrote:quoted
On Fri, Apr 30, 2021 at 7:58 AM Randall S. Becker [off-list ref] wrote:quoted
From ba4beb8ed0dff67ae6b95692d346adce346e2871 Mon Sep 1700:00:00quoted
quoted
quoted
2001quoted
From: "Randall S. Becker" <redacted> Date: Fri, 30 Apr 2021 09:56:09 -0400 Subject: [Patch 1/3] connect.c: add nonstopssh variant to the sshVariantset.quoted
quoted
quoted
quoted
This enhancement allows the NonStop SSH subsystem to be supported by git without the need of a wrapper script. The command arguments for the platform SSH client in /G/system/zssh/sshoss are constructed based on optional supplied environment variables SSH2_PROCESS_NAME (system defined), SSH_SUPPRESS_QUIET, andSSH_SUPPRESS_BANNER.quoted
quoted
Before introducing 3 new special environment variables, I think this commit message should explain why you can't just use GIT_SSH_COMMAND="/G/system/zssh/sshoss -Z -Q -S"No, it would be GIT_SSH_COMMAND='/G/system/zssh/sshoss -Z -Q -S$ZSSH0'quoted
and that does not work correctly in the current git code base. Is the problem that $ZSSH0 may contain spaces, or that $ZSSH0 is expected to change over time and you don't want to have to re-run GIT_SSH_COMMAND="/G/system/zssh/sshoss -Z -Q -S $ZSSH0" each time?
I'm looking for a more general solution than what I originally proposed, but still think that we need the variant. With that said: there are multiple command arguments to sshoss that need to be supported and an environment variable for each is obviously not effective. I am thinking that this variant has value. The primary problem is supplying -S $ZSSH0 on the command line causes $ZSSH0 to be resolved as a shell variable. It is not. It is the process name of the SSH stack, which can vary. The current code, if -S $ZSSH0 is supplied, ends up resolving to nothing, so the -S argument eats the URL and the SSH operation fails. The other problem is that sshoss does not support a URL with a port number in it, so that must be resolved explicitly as -p port, but the other variants do not handle this situation, with -S. At the very least, those two parameters (-S, -p) have to be accounted for in the variant, and -Q (suppress local banner) is required or the dialog generally breaks because it com es back on stdout and confuses git. What I am considering is a single NONSTOP_SSH_ARGUMENTS environment variable to contain all other options that may be there today or in future, and have the internal code split the arguments up appropriately. A bit of background on process names. $ZSSH0 is an example. On my system there is $ZSSGT (external subnets) and $ZSSH1 (internal subnets). There is a wide variety of naming, but they all begin with the annoying $ sign. Escaping the $ does not work consistently, I think because there are varying numbers of shells involved given different circumstances that only impacts the NonStop platform - it's not for lack of trying to get around this. Looking for guidance on this use case - not expecting this for 2.32, obviously. Currently, we are forced to use a wrapper script, which is not ideal. The -p option has to be embedded in the script so using a GitHub, BitBucket, GitLab, etc., supplied URI does not work correctly. Of course, the script could parse out the :port, but URI parsing seems redundant given the variant mechanism. Thanks, Randall