-
Notifications
You must be signed in to change notification settings - Fork 18.7k
Fix #28814: use emulation for ConEmu and ConsoleZ #37600
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
Conversation
Signed-off-by: Ximo Guanter Gonzálbez <joaquin.guantergonzalbez@telefonica.com>
The failure in the
|
I'm not sure about this fix not ever using either of these consoles. These two consoles being handled differently have been there for a long time - Conemu for several years, ConsoleZ was added more recently (circa 2 years ago). From the perspective that removal won't affect Windows native console, the change is fine by me. However, I can't say it LGTM without some weigh-in from both ConsoleZ and Conemu folks, and especially how it might affect their use on down-level (meaning all the way from Win7 to Win10RS4/1709) clients. |
Thanks for the review @jhowardmsft! The code I am removing is certainly old, but so is the bug that it fixes, which was opened only a month after the original code was added. Removing this code means that ConEmu/ConsoleZ will interact with a Docker client that behaves exactly the same way as it does in raw conhost. Since both of these consoles are designed to be drop-in replacements for the native console in Windows, it seems like having Docker behave the same way in all consoles is a bullet-proof way of avoiding console-specific bugs. As @Maximus5 says in this comment Maximus5/ConEmu#958 (comment), if Docker isn't working on ConEmu and it is behaving exactly the same as in raw conhost, there is a bug in ConEmu. But, if docker is doing special things for ConEmu and it is not working, then it is a problem in docker. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SGTM
largely the same for me; I'm not a Windows user, and don't use these, so can't say a lot about the change 😅
Let me clarify this. ConEmu may act in two ways:
The problem of the first way - ConEmu can't manage ANSI output sequences and users will never get advantages like 256 or true-color output. With exception of that (256-color mode), docker will act in ConEmu exactly as in raw console. Second way gives users true-color output and some ConEmu specific features. But users have to run docker with special ConEmu's switch or we need to hardcode this mode in both docker and ConEmu. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SGTM too
Codecov Report
@@ Coverage Diff @@
## master #37600 +/- ##
=========================================
Coverage ? 35.63%
=========================================
Files ? 611
Lines ? 44962
Branches ? 0
=========================================
Hits ? 16022
Misses ? 26727
Partials ? 2213 |
@thaJeztah, do I need to open a PR in docker/cli to update the dependency on moby? Or will the change trickle down auto-magically? |
- What I did
I remove a special-case handling of the ConEmu and ConsoleZ console emulators, which was causing problems with pipes. ConEmu and ConsoleZ will now be handled like any other console emulator in windows: by using emulated streams that handle VT codes inside Go.
- How I did it
By removing an
if
block- How to verify it
I verified it on Windows 10 1803 (17134.112) by using ConEmu 180626 and ConsoleZ 1.18.3.18143
I have also verified that removing this block does not produce a regression on #25475
- Description for the changelog
Fix pipe handling in ConEmu and ConsoleZ