Open repositories on another machine over ssh; keep the window responsive while git runs #5

Open
szaman wants to merge 14 commits from feature/remote-ssh into master
14 Commits
Author SHA1 Message Date
szaman 898135121c Let opening a repository win over a reload
ci / check (push) Successful in 2m58s
A reload's reply or error is dropped when an open was running as it
started, an open started after it, or an open is still running when it
answers. An open's reply or error is dropped only when a newer open
started after it.
2026-10-15 15:32:44 +02:00
szaman bd7c129116 Share no ssh connection when the socket path would be too long
macOS accepts socket paths of at most 103 characters. Count the folder,
the file name, the 40-character hash and the temporary end ssh adds; when
the total is over 103, leave the connection-sharing options out. Find,
make and check the socket folder once per run instead of for every
command.
2026-10-15 15:31:08 +02:00
szaman 25308f5f0f Show only the newest repository when replies arrive out of order
Every reload and every open takes a number before asking git; a reply is
used only if no newer request was sent after it, and an out-of-date error
is not shown. Commit details and diffs that come back after another
repository was opened are neither kept nor shown.
2026-10-15 15:31:08 +02:00
szaman 7b902616fe Let error messages stay until read; show the remote form on the welcome screen
Error messages now stay for 8 seconds or until clicked, and keep each
hint on its own line. The welcome screen shows how to start gites with
a repository on another machine. The spec follows these changes and the
new ssh options and socket folder.
2026-10-15 15:26:16 +02:00
szaman bf6ae3e2bb Keep the window responsive and ssh connections safe
Commands that run git now run away from the thread that draws the
window, so a slow server no longer freezes it. ssh now notices a server
that stopped answering in about 10 seconds. The sockets for shared
connections go in the runtime folder, or else in a private gites folder
in the cache folder, never in /tmp; without either, connections are not
shared. A path that is exactly ~ now means the home folder on the
server.

Tests cover commit details through ssh, the message for a failed
connection, and a ~/ path end to end. The stand-in ssh is now set per
test, so a test can give it its own home folder.
2026-10-15 15:26:16 +02:00
szaman 5ef5c1ba94 README: repositories on another machine 2026-10-15 15:16:46 +02:00
szaman ccf945a067 Open on another machine from the window; keep the graph when a reload fails 2026-10-15 15:15:41 +02:00
szaman 16b0363d07 Run the stand-in ssh for tests without writing a script file 2026-10-15 15:13:02 +02:00
szaman 48e5e8c8ce Keep command-line paths that are not valid UTF-8 intact 2026-10-15 15:11:26 +02:00
szaman 7fe5a70c69 Run git through ssh for repositories on another machine 2026-10-15 15:09:17 +02:00
szaman 121fe1bc2f Send remote commands in a form every login shell reads the same way 2026-10-15 15:07:31 +02:00
szaman 157a4063c7 Read host:path locations and quote words for a server's shell 2026-10-15 15:05:23 +02:00
szaman ddb05980e0 Plan: open repositories on another machine over ssh 2026-10-15 14:44:17 +02:00
szaman 761e528e15 Design: open repositories on another machine over ssh 2026-10-15 14:35:27 +02:00