-
Notifications
You must be signed in to change notification settings - Fork 2.7k
winpty does not work well with MSYS_NO_PATHCONV=1 #738
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Yeah, |
So the resolution is not to use cmd //k 'dir c:\windows' |
Thanks,
works fine, but
will execute
|
That is not correct. It is MSYS2's runtime's POSIX->Windows path conversion that does this, and it does the expected thing because at some point the quotes are lost and MSYS2 has to interpret the argument as if it were a relative path. Take-home lesson: never use |
This statement is incorrect, as shown by the following experiment: args.c -> args.exe #include <stdio.h>
int main(int argc, char* argv[]) {
for (int i = 0; i < argc; i++) {
puts(argv[i]);
}
} Now observe:
As you can see, MSYS2 doesn't touch your arguments if it doesn't start with a slash. So yes, it's winpty doing the replacement.
You don't have choice when the program you're using is called node, php, php5, psql or python2.7, since in those cases winpty is forced on you. Which results in issues like #740. |
Yes, you have a choice. Just call them as If you have any splendid idea how to solve the interactive console problem in a better way, you know, I am all ears. |
Sure. Just have the users call |
Umm. Is this a joke? How is that a better idea? How does that prevent users flooding me (not you, of course) with bug reports? Sorry, I do not have time for this. |
No, that is correct. The MSYS2 runtime does not perform path conversion for its own programs. This is a very rudimentary conversion performed by winpty that seems to be causing problems all over the place. This should be fixed now, see this commit. |
I got directed here from the nodejs forum. This also fails under cygwin: PROMPT$ yes | xargs node.exe fillbuffer.js | tee xxx PROMPT$ cat fillbuffer.js |
@coderextreme Does it work if you call |
It ended up being that the node.js process wasn't exiting properly.
On Feb 24, 2017 10:24 AM, "Johannes Schindelin" <[email protected]> wrote:
@coderextreme <https://github.com/coderextreme> Does it work if you
call "C:\Program
Files\Git\usr\bin\bash.exe" -l -i from a cmd window and execute that
command-line there?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#738 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AArE91b6qaeSgEMpJMkjLIiHgsgncfIPks5rfvYngaJpZM4ILaOZ>
.
|
@coderextreme It seems you either didn't read or didn't understand my comment. Please read it again. There is no evidence that it's a Node.js bug. Your problem also doesn't have anything to do with winpty (as it was pointed out to you), so I'm not sure why you brought it up in this issue. |
We should standardise on a location (and naming convention) to store secrets used as part of the build process for `microsoft/git`. Azure Key Vault is an approved store for secrets inside of Microsoft, and so we should migrate any existing secrets from GitHub environment secrets to AKV. Access to the AKV is via Managed Identity and [federated authentication through GitHub Actions](https://learn.microsoft.com/en-us/azure/developer/github/connect-from-azure-openid-connect). The names of the secrets, and other configuration for accessing the Key Vault, remain in GitHub environment secrets. Forks of the project can therefore define the same set of environment secrets pointing at their own AKV to utilise the same build process. For reference, the set of secrets that must be defined for the workflow are as follows: Secret Name|Description -|- `AZURE_VAULT`|Name of the Azure Key Vault containing build secrets. `AZURE_CLIENT_ID`|Client ID of the Managed Identity with access to the Key Vault. `AZURE_TENANT_ID`|Tenant ID where the Managed Identity resides. `AZURE_SUBSCRIPTION_ID`|Subscription ID where the Key Vault resides. `WIN_CODESIGN_CERT_SECRET_NAME`|Name of the AKV secret containing the base64 encoded Windows Authenticode signing certificate. `WIN_CODESIGN_PASS_SECRET_NAME`|Name of the AKV secret containing the password for the Windows Authenticode signing certificate. `WIN_GPG_PRIVATE_SECRET_NAME`|Name of the AKV secret containing the GPG private key used to sign the Windows package. `WIN_GPG_KEYGRIP_SECRET_NAME`|Name of the AKV secret containing the keygrip for the GPG key used to sign the Windows package. `WIN_GPG_PASS_SECRET_NAME`|Name of the AKV secret containing the passphrase for the GPG private key used to sign the Windows package. `APPLE_APPCERT_SECRET_NAME`|Name of the AKV secret containing the base64 encoded Apple Application Certificate for macOS. `APPLE_APPCERT_PASS_SECRET_NAME`|Name of the AKV secret containing the password for the Apple Application Certificate. `APPLE_INSTCERT_SECRET_NAME`|Name of the AKV secret containing the base64 encode Apple InstallationCertificate for macOS. `APPLE_INSTCERT_PASS_SECRET_NAME`|Name of the AKV secret containing the password for the Apple Installation Certificate. `APPLE_TEAM_ID_SECRET_NAME`|Name of the AKV secret containing the Apple Developer Team ID. `APPLE_DEVELOPER_ID_SECRET_NAME`|Name of the AKV secret containing the Apple Developer ID account email address for developer signing. `APPLE_DEVELOPER_PASSWORD_SECRET_NAME`|Name of the AKV secret containing the Apple Developer ID account password for developer signing. `APPLE_APPSIGN_ID_SECRET_NAME`|Name of the AKV secret containing the Apple Application Signing ID. `APPLE_INSTSIGN_ID_SECRET_NAME`|Name of the AKV secret containing the Apple Installation Signing ID. `LINUX_GPG_PUBLIC_SECRET_NAME`|Name of the AKV secret containing the base64 encoded GPG public key used for Debian package signing. `LINUX_GPG_PRIVATE_SECRET_NAME`|Name of the AKV secret containing the base64 encoded GPG private key used for Debian package signing. `LINUX_GPG_PASS_SECRET_NAME`|Name of the AKV secret containing the password for the GPG signing key used for the Debian package. `LINUX_GPG_KEYGRIP_SECRET_NAME`|Name of the AKV secret containing the keygrip of the GPG signing key used for the Debian package.
There are several issues that have been uncovered with the changes made in git-for-windows#738. Let's fix them! * Check out `akv-secret` action before it is used. * Log in to Azure before accessing the Key Vault. * Don't mask empty lines. * Use a buffer to fix encoding issues when writing binary data. * Correctly mask multi-line secret values. * Add missing `require('path')` statement.
or closed issue
matching what I'm seeing
Setup
output of
git version
as well.Git for Windows 64bit on Windows 10
Windows 10, Pro, 64-bit
defaults?
default
to the issue you're seeing?
I've svn, docker
Details
bash
Minimal, Complete, and Verifiable example
this will help us understand the issue.
$ unset MSYS_NO_PATHCONV; MSYS_NO_PATHCONV=1 cmd /K dir 'c:\Windows'
$ unset MSYS_NO_PATHCONV; MSYS_NO_PATHCONV=1 winpty -- cmd /K dir 'c:\Windows'
$ unset MSYS_NO_PATHCONV; winpty -- cmd /K dir 'c:\Windows'
both 1st and 2nd command should run "dir" on C:\Windows
The 1st command, will run dir and stay in the cmd console, however, cursor will broken (up/down keys)
The 2nd command, will skip the "dir" but have cmd console, cursor work as expected.
The 3nd command, same as the 2nd.
It does matter not only doing for cmd.exe, but also many useful interactive shells for devs, e.g. mysql-sh, sqlcmd and sqlplus.
URL to that repository to help us with testing?
N/A
The text was updated successfully, but these errors were encountered: