From e405b9bbe46a261557d3ba382fa98b1aea42c7ca Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 May 2017 10:57:20 -0400 Subject: [PATCH] break out bug report --- ..._5da63cf5fa93120c85b98077fba51488._comment | 3 +- ...ch_with_ssh_password_prompting_and_-J.mdwn | 45 +++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 doc/bugs/minor_display_glitch_with_ssh_password_prompting_and_-J.mdwn diff --git a/doc/bugs/get_-J_cannot_be_used_with_password-based_authentication/comment_8_5da63cf5fa93120c85b98077fba51488._comment b/doc/bugs/get_-J_cannot_be_used_with_password-based_authentication/comment_8_5da63cf5fa93120c85b98077fba51488._comment index 1de5890d7c..8860bc536e 100644 --- a/doc/bugs/get_-J_cannot_be_used_with_password-based_authentication/comment_8_5da63cf5fa93120c85b98077fba51488._comment +++ b/doc/bugs/get_-J_cannot_be_used_with_password-based_authentication/comment_8_5da63cf5fa93120c85b98077fba51488._comment @@ -6,5 +6,6 @@ Current status: It's implemented, but not for `GIT_SSH` yet. The display is a bit ugly, because the ssh password prompt line -confuses the concurrent-output region manager. +confuses the concurrent-output region manager. Opened +[[minor_display_glitch_with_ssh_password_prompting_and_-J]] bug for that. """]] diff --git a/doc/bugs/minor_display_glitch_with_ssh_password_prompting_and_-J.mdwn b/doc/bugs/minor_display_glitch_with_ssh_password_prompting_and_-J.mdwn new file mode 100644 index 0000000000..b106e664d5 --- /dev/null +++ b/doc/bugs/minor_display_glitch_with_ssh_password_prompting_and_-J.mdwn @@ -0,0 +1,45 @@ +When using -J and there's a ssh password prompt (or other prompt eg ssh +host key), the region-based display gets messed up by the ssh output. This +is a minor display glitch; it's still fairly clear what git-annex is doing. + +The root problem is that the regional display code does not know the +absolute cursor position. All cursor movement is relative. So when ssh +display moves the cursor, all subsequent output goes to the wrong place. + +ansi-terminal has absolute cursor movement, but no way to query position. + +Some approaches to fix it: + +1. Allocate a slave pty and run ssh in there, forwarding IO from the slave + pty to the master pty. The ssh output is then added to the region that + it's prompting for the password for. + + Unix-specific and somewhat heavyweight solution. + +2. Set position to eg 0,0 when starting git-annex, and then the + absolute position can be calculated, and after ssh runs it can reset the + cursor to the previous position. + + Would make -J take over the whole screen even if it's only transferring + 1 file. + +3. Clear all regions before running the ssh command that can prompt, + (moving the cursor to the start of the first region), + and redraw them when it's done. So the ssh output would appear above the + redrawn regions. + + This would cause some flicker in the common case where ssh does not have + any output. The N regions would display briefly, then be cleared, then + be redrawn. It might flicker multiple times, when multiple different + hosts are being accessed. + + One way to avoid the flicker would be to first + try to ssh with password prompting disabled, and only if that fails do + regions need to be cleared for the ssh that will prompt. Also, since + we then know ssh will prompt, we can display the hostname as context for + the "Password:" prompt it uses. + +4. Find a way to add cursor position querying to ansi-terminal. Can it be + done portably? + +--[[Joey]]