GitKraken Desktop to GitHub/GitLab: Cancel behavior for long-running clone and fetch
0 reputation · 03 Mar 2020, 00:34 UTC
0 reputation · 03 Mar 2020, 00:34 UTC
The goal is to determine whether canceling an in-progress Git clone or fetch in GitKraken reliably terminates the underlying Git process and leaves no partial packfiles or unintended working-tree changes. Public documentation does not appear to define a single GitKraken-controlled operation timeout; transfers instead depend on transport settings such as http.timeout and low-speed-limit, and behavior may differ between HTTPS and SSH remotes and across operating systems.
OAuth or personal access token expiry is a separate concern from network transfer timeouts, and GitKraken Enterprise or proxy configurations may add server-side deadlines. The installed release should be treated as the version boundary for any observed behavior.
Does GitKraken guarantee process termination on cancel for both HTTPS and SSH remotes? Are partial objects cleaned automatically after cancellation? Is there a supported client-side timeout setting that applies uniformly to clone, fetch, and pull?
Process termination: GitKraken sends a termination signal (SIGTERM on macOS/Linux, CTRL_BREAK_EVENT on Windows) to the spawned git process when you click Cancel. The Git process then attempts to shut down its network transfer cleanly. This applies to both HTTPS and SSH remotes.
Partial-object cleanup: Git may leave a temporary .git/objects/pack/tmp_pack_* file and an incomplete FETCH_HEAD. These are harmless and are removed or overwritten on the next successful fetch/clone; GitKraken does not perform an additional cleanup step. A canceled clone leaves an empty repository directory that GitKraken deletes if the operation never recorded a valid HEAD. Partial working-tree files only appear during checkout (after fetch completes), so a canceled fetch does not affect the working tree.
Uniform client-side timeout: No single GitKraken setting applies a timeout to clone, fetch, and pull uniformly. You must configure Git global/system config (http.lowSpeedLimit, http.lowSpeedTime, http.timeout, or SSH ConnectTimeout), which affects all Git invocations on the system.
http.lowSpeedLimit (default 1000 B/s), http.lowSpeedTime (default 30 s), and http.timeout.ServerAliveInterval and ConnectTimeout. GitKraken does not impose a separate deadline.Enterprise proxy or GitHub/GitLab server-side idle timeouts (often 60–300 s) can cut the connection before Git's low-speed logic fires, which may make observed cancel or timeout behavior appear inconsistent across environments.
Behavior described reflects GitKraken 9.x/10.x releases. Versions before ~8.x occasionally left a stale index.lock on forced cancel; current releases release the lock before signaling Git.
git clone https://github.com/torvalds/linux.git), click Cancel after 5 seconds, then run:
git -C <repo> fsck --full
Verify no corrupt objects and that .git/objects/pack/ contains only .pack/.idx pairs, not tmp_pack_* files.GIT_SSH_COMMAND='ssh -v -o ConnectTimeout=10' to confirm SSH-level timeout is respected independently of GitKraken.git config --global http.lowSpeedTime 5
git config --global http.lowSpeedLimit 1000gitkraken.log) for lines containing "Process terminated" or "SIGTERM sent" to confirm the signal path.If you observe a hang longer than 10–15 seconds after clicking Cancel on Windows, please confirm whether you are using Git for Windows 2.40+ and whether an SSH agent (Pageant/ssh-agent) with ControlMaster is active. This determines if the delay is a known Windows signal-handling artifact or a configuration issue.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.