Gpush가 vim으로 돌아가지 않습니다.
6511 단어 vim-fugitive
묘사
을 사용하여 백엔드에 들어갔습니다. 저는 제 제출이 전송된 전형적인git소식을 보았습니다.그리고 아무것도 없어졌어요.'리턴 키를 누르면vim로 돌아가기' 가 나타나지 않습니다.나는:Gpush
이 있어야만 윌렘으로 돌아갈 수 있다.^C
다시 그리는 문제인가요?토론 #1
을 누르세요.<C-L>
아니요, 아니요.토론 #2
을 누르면<C-L>
을 출력할 수 있다.그나저나 Git는 전송할 때마다 내 사용자에게 요청하고 통과하도록 설정되어 있습니다.
^L
에서 다음과 같은 각 방법을 시도해 보십시오.:!git push
:!git push | tee /dev/null
:!git push 2>&1 | tee /dev/null
토론 #셋
모두가 "Enter..."메모그 전에 토론 #4
을 사용했는데 효과가 좋았습니다.:Git push
급한 일 있으세요?윌?당신의 답이 무엇이든지 상반된 방법을 시도해 보세요.토론 #5
없습니다.지금 설치합니다.tmux에서 새 패널을 열었지만,vim로 돌아가는 것을 허용하지 않습니다.토론 #6
'돌아오지 말라'고 해명해 주시겠어요?Vim이 차단됐나요?토론 #7
은 완전히 그렇지 않습니다.이것은 보낼지 안 보낼지 상관없이 '되돌아오기 누르기...' 를 표시하지 않는다는 것을 의미한다.편집: 이것은 tmux입니다.나는 tmux에서 패널을 전환할 수 있지만,botton 패널은 사라지지 않는다. 내가
토론 #8
<C-C>
을 누르지 않으면. 보기에 근본적인 문제는 토론 #9
이 물러나지 않았다는 것이다.git push
은 실제 실행 중인 작업 (dispatch.vim 없음) 이 더 가깝기 때문에 버튼 반환 알림을 표시하지 않습니다.set makeprg=git\ push
silent make!
redraw!
너는 그것이 걸리는지 안 걸리는지 시험해 볼 수 있다.:Gpush
토론 #10
과<C-C>
사이에 :make
을 눌러야 합니다.그리고 윌이 돌아왔어요.:redraw
은 토론 #11
을 각각silent make!
과 make!
으로 변경하려고 시도했습니다. 죄송하지만 설명을 이해하지 못했습니다.그러나 테스트를 위해
silent !git push 2>&1 | tee /dev/null
은 먼저'모든 최신'(예상)을 표시한 다음에 검은색 화면을 표시했지만 토론 #12
은 이를 복구했다.:silent !git push 2>&1 | tee /dev/null
현재 :redraw
토론 #13
make!
:silent !git push 2>&1 | tee /dev/null
first show "Everything up-to-date" (expected) and then a black screen but:redraw!
fixes it.
그 후에 나는
토론 #14
을 사용했는데, 그것은 성공했다.set makeprg=git\ push
이 :make!
일 때, 토론 #15
으로 시작하는 줄을 표시해야 합니다. 이것은 실행 중인 명령입니다.그게 무슨 명령이야?너는 마땅히set makeprg=git\ push
make!
그런 다음 :make
을 :!
또는 토론 #16
또는 기타 모든 유형으로 변경합니다.하지만 수술 과정에서 남은 쓰레기는 어떤 것도 상해해서는 안 된다.이제 내 문제로 돌아가.make!
은 현재 작업 중이며 더 이상 설명할 필요가 없습니다.silent make!
.만약 내가 복제할 수 있다면, 나는 돌아와서 보고할 것이다.silent !git push
나는 이것이 탈출의 문제라고 생각하지 않는다.다시 발생하면 토론 #17
프로세스에서 하위 프로세스를 마운트하는지 확인하십시오.:Gpush
같은 문제에 부딪혔습니다.gitpush가 항상 정확하게 되돌아오는 것을 확인할 수 있습니다.토론 #18
은 실제로neovim 내부에서 이 문제는 치명적이다. 죽이지 않은 상태에서vim실례를 회복할 수 없기 때문이다.나는 때때로git가 사용하는 외부 증명서 조수와 관련이 있다고 생각한다.이 점을 증명할 수 있는 사람이 있습니까?
git push
네, 드디어 이곳에서 무슨 일이 일어났는지 알았습니다.그래서 이 문제를 다시 한 번 공개해 달라고 요청했다.이것은git에서 사용할 수 있는 증명서 캐시 메커니즘과 관련이 있는 것 같습니다.내
토론 #19
에서 나는 다음과 같은 부분을 얻었다.[credential]
helper = cache
이 설정에서git는 때때로 두 번째 프로세스를 생성합니다. 이를 토론 #20
이라고 합니다.jwienke 16551 1 0 14:28 pts/12 00:00:00 git-credential-cache--daemon /homes/jwienke/.git-credential-cache/socket
ps 출력에서 이 helper 프로세스를 만드는git 프로세스가 이 프로세스를 init에 맡기고 수호 프로세스가 되는 것을 볼 수 있습니다.그러나 토론 #21
조작도 이 과정을 기다리고 있는 것 같다.내가 수호 프로세스를 죽인 후, 끊긴vim는 즉시 돌아옵니다.$HOME/.gitconfig
나는 이 문제의 유래가 오래되었다는 것을 알고 있지만 나도 그것을 만났다. 이것은 인터넷 전체에서 유일하게 그 문제를 언급한 곳(내가 연 stackoverflow 문제 제외)이기 때문에 나는 내가 나의 발견을 보충해야 한다고 생각한다...위의 @languitar 같은 어떤 종류의 증명서 조수도 사용하지 않았지만, 연결을 유지하기 위해 ssh를 설정했습니다.내 ~/에 다음 내용이 포함되어 있습니다.ssh/config:
Host *
ControlPersist 5m
...내가 git-credential-cache--daemon
을 실행할 때 ssh는 연결의 활동성을 유지하기 위한 프로세스를 생성합니다.이것은 이 문제를 야기시켰다.나는 tmux와vim dispatch를 사용했기 때문에, 나의 예에서, 나는 열린 상태를 유지하는 tmux 창을 얻었다.접속이 활성 상태일 때 두 번째 밀어넣기를 수행하면 문제가 발생하지 않습니다(창이 열리고 밀어넣기가 발생하며 창이 닫힙니다).5분만 기다리면 ssh 프로세스가 종료되고 창이 닫힙니다.이상하게도 창이 ssh 프로세스를 기다리고 있지만, 이 창으로 전환하고 Ctrl + C를 누르면 ssh 프로세스를 종료하지 않습니다.그래서 실제로 걸어놓는 과정이 뭔지 모르겠어요.Gpush
은git 프로세스 자체를 나타낸다.그래서dr:git가 다른 프로세스에서 파생되기만 하면 이 문제를 일으킬 수 있습니다.나로서는 송승헌...Langitar의 예에서 git 자격 증명 캐시 데몬입니다...나는 OP가 확실하지 않지만, 나는 그도 비슷한 설정을 가지고 있다고 추측한다.
내가 특수한 상황을 위해 생각해낸 가능한 해결 방안 중 하나는 ControlPersist 옵션을 비활성화하는 것이지만, Survious를 통해vim 내부에서 실행되는git 명령에만 적용됩니다.이 점을 하기 위해서, 나는 내 것이다.vimrc:
let g:fugitive_git_executable = "env GIT_SSH_COMMAND='ssh -o ControlPersist=no' git"
이것은 추해서 나를 괴롭혔다. 나는 지속적인 연결을 금지해야 하지만, 그것의 일은...토론 #22
FWIW는 비슷한 문제로 인해 Vim에 특정한 내용이 없음에도 불구하고 ssh 구성에서 ControlPersist를 취소했습니다.아마도 이것은 부모 셸과 관련이 있습니까?만약 당신이 케이스에서:Gpush
을 꺼낸 후에 즉시 ps
을 꺼낸다면 이것도 끊을까요?토론 #23
난 아무 문제 없는 것 같아...나는 송승헌이 죽었다는 것을 확신하고git push
을 운행했다. 이어서 logout
을 운행했다.좋아.나는 또 다른 몇 가지 일을 시도했다.
나는 fugitive.vim, line 1586을 바꾸려고 시도했다.
토론 #24
을 통해makeprg를 실행했다. 이것이 도움이 되는지 보았지만, 이것은 아무런 변화도 없었다.내 다음 생각은 백그라운드에서git(
git push
)를 운행하고 에서 같은 줄을 편집해서 logout
과 bash -c
을 운행하는 것이다.vim, 그런데 vim 스케줄 중인 물건이 &
에서 폭발했어요.그래서 나는 이 물건들을 셸 스크립트로 옮겨서 도주범들이 disown $!
을 스크립트로 가리키도록 했지만 아무것도 바뀌지 않았다.나는 ControlPersist를 사용하지 않고 밀고 당기는 조작을 하는 것에 대해 결코 괴로워하지 않는다. 왜냐하면 어쨌든 나는 보통 5분 안에 (나의 ControlPersist 설정) 밀고 당기는 조작을 실행하기 때문이다.그냥 내 마음속의 문제 해결자가 문제가 뭔지 궁금해서...
플러그인 고마워요!
wait $!
최소한 &
로고를 통해 사용하지 않는 옵션을 git 호출에 전달해서 캐시 수호 프로그램 문제를 돌릴 수 있습니까?g:fugitive_git_executable
도움이 되는지 확인하고 인출 요청을 보내면 합병하겠습니다.
Reference
이 문제에 관하여(Gpush가 vim으로 돌아가지 않습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/tpope/vim-fugitive/issues/531텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)