break out bug report
This commit is contained in:
parent
9f11769455
commit
e405b9bbe4
2 changed files with 47 additions and 1 deletions
|
@ -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.
|
||||
"""]]
|
||||
|
|
|
@ -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]]
|
Loading…
Reference in a new issue