Lazygit hangs on any custom command
Describe the bug
When I call any custom command using : it is stuck on "Press enter to return to lazygit" when I call it from Neovim. However, when I call it directly from the Terminal (kitty) like:
/some/repo
> lazygit
+ /bin/zsh -i -c git fetch origin develop
From github.com:some/repo
* branch develop -> FETCH_HEAD
[1] + 50708 suspended (tty output) lazygit
> …/some/repo ✖ TTOU 7s
> fg
[1] + 50708 continued lazygit
it's stuck, lazygit doesn't appear. I can't do anything, I have to kill the terminal.
Environment
> lazygit --version
commit=, build date=, build source=nix, version=0.44.1, os=darwin, arch=arm64, git version=2.46.0
> git --version
git version 2.46.0
Additional context
I'm using Nix and I noticed that lazygit calls wrong zsh instance. It should use the first one:
> where zsh
/etc/profiles/per-user/me/zsh
/run/current-system/sw/bin/zsh
/bin/zsh
but it uses the last one. I'm not sure if it matters.
This is a duplicate of #3903 (and #3923).
I'm using Nix and I noticed that lazygit calls wrong zsh instance. It should use the first one: but it uses the last one. I'm not sure if it matters.
It probably doesn't matter for this issue, but just to explain this one: lazygit uses whatever your $SHELL environment variable is set to (and it seems to be /bin/zsh). It doesn't look for zsh in your PATH.
Thank you for details! I'm waiting for the fix then 🤞
Apologies if this is the same issue, but I'm running into almost exactly the same issue except my terminal (wezterm) is not freezing. Lazygit is simply being killed after running a custom command, and I have to reopen it.
+ /bin/zsh -i -c git pull
Already up to date.
Press enter to return to lazygit[3] + 13839 suspended (tty input) lazygit
~/Documents/myRepo $
Apologies if this is the same issue, but I'm running into almost exactly the same issue except my terminal (wezterm) is not freezing. Lazygit is simply being killed after running a custom command, and I have to reopen it.
It gets suspended, not killed, you can bring it up with fg.
But yes, same issue.
Based on your logs it’s suspended. What happens if you run fg after that? In my case it’s not going back to lazygit but it’s freezed
ah, yes. Confirmed that running fg afterwards results in [1] + 4381 continued lazygit with a hanging blinking cursor.
that said, if I run exit then, it does go back to lazygit
piggybacking on what @softkot said
downdrade to v0.43.1 solve the problem
I've also downgraded to 0.43.1 to solve the issue.
Has the same issue starting from v0.44.0 downdrade to v0.43.1 solve the problem
I had something similar using Conventional Commits guide bound to Ctrl-C it worked but then ended up in a freezing loop where eventually the mouse wouldn't even move.
I realized it was because there was a conflict between my "smooth" keybind and other apps or systems. Ctrl-C in linux is used to completely halt an operation. Kinda dumb - didn't think it would matter.
I saw the OP saying they use : which is a VERY VERY common and frequently used keybind in vim, and neovim by extension, so probably not the one you want to use.
I changed my binding and the problem went away. Figures that when lazygit is fighting to do something while some other system is trying to do something there ought to be conflicts.
@hglbrg-sli the same issue occurs when lazygit is called directly from the terminal (not from Neovim)
I'm having the same problem when running shell commands. Keeps hanging in Press enter to continue and doesn't leave, I have to kill lazygit to be able to leave the screen.
After querying GTP, I got the exit solution. I've tried multiple commands and it works well.
Can you guys try it out?
run <your command>; exit in lazygit instead.
Hmm I just noticed this seems to work on the latest commit using the following custom command (log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(auto)%d%C(reset)' --all)
https://github.com/mikavilpas/dotfiles/blob/8e457695f42dac7e7ba5772b58ee3cf4ec209483/.config/lazygit/config.yml?plain=1#L8-L12
Maybe it has been fixed? Can anyone reproduce the issue on e1e4e1be1fb6?
@mikavilpas I believe these are different cases. The case we’re discussing is actually about ‘shell commands,’ not ‘custom commands.’
To be precise, custom commands are those configured in config.yml, while shell commands are entered directly in the input field that appears after typing :. The author has mixed up these concepts.
For custom commands, we don’t use the -i option, so they work as expected.
I see. I just tried it out and it seems echo $USER and echo $USER && read work, but git fetch --prune does not.
I have been using this method for days. And it works fine for me. I'm not sure if it's the correct way to fix it, but it works.
diff --git forkSrcPrefix/pkg/commands/oscommands/cmd_obj_builder.go forkDstPrefix/pkg/commands/oscommands/cmd_obj_builder.go
index 3e89ce1029354e8c813801a53c3765c9abefba46..97075768584f0d58644c610f0b1eb280303eef46 100644
--- forkSrcPrefix/pkg/commands/oscommands/cmd_obj_builder.go
+++ forkDstPrefix/pkg/commands/oscommands/cmd_obj_builder.go
@@ -52,6 +52,7 @@ func (self *CmdObjBuilder) NewShell(commandStr string) ICmdObj {
}
func (self *CmdObjBuilder) NewInteractiveShell(commandStr string) ICmdObj {
+ commandStr += "; exit"
quotedCommand := self.quotedCommandString(commandStr)
cmdArgs := str.ToArgv(fmt.Sprintf("%s %s %s %s", self.platform.InteractiveShell, self.platform.InteractiveShellArg, self.platform.ShellArg, quotedCommand))
run
<your command>; exitin lazygit instead.
@yam-liu is awesome! Your workaround mitigated this months-long issue!
@jesseduffield , please consider ship Yam's solution soon.
@jesseduffield , please consider ship Yam's solution soon.
Here's a PR: #4126. Could those affected by the problem please test it? Thanks!
Fixed in #4126.