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.
|
Current status: It's implemented, but not for `GIT_SSH` yet.
|
||||||
|
|
||||||
The display is a bit ugly, because the ssh password prompt line
|
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…
Add table
Add a link
Reference in a new issue