break out bug report

This commit is contained in:
Joey Hess 2017-05-12 10:57:20 -04:00
parent 9f11769455
commit e405b9bbe4
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
2 changed files with 47 additions and 1 deletions

View file

@ -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.
"""]]

View file

@ -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]]