Gstatus의 헤드 교체 실패
4359 단어 vim-fugitive
묘사
분기를 제출하거나 전환할 때마다(Git 또는 명령줄에서) 다음: Gstatus에서 다음 오류가 발생합니다.함수 21 BufReadIndex를 처리하는 동안 오류가 발견되었습니다.
21행:
E344: cdpath에서 디렉토리 "
=s:repo().tree()
"를 찾을 수 없습니다.E472: 명령 실패
나는 《도주범》의 신구 판본에서 모두 시험해 보았고, 나도 같은 실수를 저질렀다.나는vim를 다시 시작해야만 그것을 일하게 할 수 있다.
토론 #1
디렉토리를 자동으로 변경하는 플러그인'autochdir'
을 설정하거나 설치했습니까?토론 #2
한층 더 분석하면 머리의 위치와 무관한 것 같다(woops).Gstatus를 실행하고 종료하고 오류가 발생하지 않도록 다시 실행할 수 없을 것 같습니다.NERDTree 플러그인만 설치했지만, 사용하지 않아도 같은 문제가 발생할 수 있습니다.나는 같은 환경에서 이 문제를 재현할 수 있다. 그 중에서 scriptnames의 출력은 다음과 같다.1:/rhel5pdi/home/ryanph/.vimrc
2:/rhel5pdi/home/ryanph/.vim/자체/병원체.윌
3:/rhel5pdi/home/ryanph/.vim/bundle/vim 도주범/플러그인/도주범.윌
토론 #셋
은 이상하다.네가 그것을 얻어서 :Gstatus
끊어진 후에, 너는 나에게 아래의 출력을 알려줄 수 있니?:echo fugitive#buffer().repo().tree()
토론 #4
는/rhel5pdi/workplace/ryanph/test/src/MyRepo로 출력됩니다. 이것은 Repo로 가는 정확한 경로인 것 같습니다.나는 이 오류가 나의 비작업 저장소에서 발생하지 않을 것이라는 것을 이미 알아차렸다. (예를 들어 Survious.vim)나는 관련 차이가 무엇인지 확실하지 않지만, 우선 우리는 주선이 아니라 주선을 사용한다.
토론 #5
아, 이게 중요할 수도 있어. 그 환매 목록 아래.git 폴더는 사실상 다른 곳을 가리키는 기호 링크입니다.토론 #6
이것은 듣기에 확실히 관련이 있다.원인을 확인해 주시겠어요?토론 #7
오류가 발생하면 빈 Gstatus 창이 열립니다.만약 내가 빈 창에서 상술한 명령을 실행한다면, 나는 다음과 같은 것을 얻을 수 있다.함수 4 repo 트리를 처리하는 동안 오류가 발견되었습니다.4 던지기:
두 번째 줄:
E605: 미포획 이상: 도주범: 무근무 트리
토론 #8
문제가 발생하면 일반git 저장소(내 작업 저장소와 달리)를 사용하여 문제를 재현할 수 있습니다.git 디렉터리는 다른 디렉터리를 가리키는 기호 링크입니다. 이 기호 링크의 목표는 '.git' (그렇지 않으면 오류가 발생하지 않습니다.)괴이한 것: 만약 내가 기호 링크의 대상 디렉터리를 'Repo.git' 이라고 명명한다면, 나는 오류를 얻을 것이다.만약 내가 그것을 '리셋' 이라고 명명한다면, 두 번째는 Gstatus 창에서 이상한 인코딩 텍스트를 볼 것이다.
토론 #9
네,:Gstatus
로 창을 닫으면 정상으로 돌아갑니다.나는 이 점을 실현하기 위해 :bwipe
지도를 바꾸고 있다.나는 우리가 이 문제를 해결해야 한다고 생각한다.왜 이렇게 이상한 짓을 했는지 물어봐도 될까요?
q
나는 방금 이렇게 하는 부작용 중 하나가 현재 사용자가 토론 #10
를 사용할 때마다 서로 다른 버퍼를 받는다는 것을 깨달았다.나 이런 거 싫어.나는 그것을 회복하는 것에 대해 망설였다.:Gstatus
이러한 설정의 일부 이유는 내부 도구를 사용하여 여러 개의 리콜 프로토콜을 포함하는 로컬 작업 구역에 패키지를 추가/삭제함으로써 어느 정도의 보호를 제공하고 로컬 리콜 프로토콜이 변경되어 의외로 효력을 잃는 것을 방지하기 때문이라고 생각합니다.패키지를 추가하고 삭제하는 것은 흔히 볼 수 있는 작업으로 패키지가 있는 디렉터리를 삭제합니다.만약 당신이 MyRepo 목록을 날려버렸다면, 당신은 여전히 MyRepo를 가지고 있을 것입니다.git 폴더와 전체 저장소입니다.토론 #11
@sofal-당신은 모든 파일을 하드 링크할 수 있습니까?git clone처럼--로컬 것은?http://stackoverflow.com/questions/4536699/how-to-backup-repository-created-with-hardlinks
토론 #12
그래, 난 계속 소란을 피우고 있었어. 모든 게 정상인 것 같아.결과가 이상해 보였어요. 커피를 많이 마셨기 때문에 다른 사람들은 행동을 취하기 전에 이런 것들을 확인해야 해요.다음은 내가 관찰한 것이다.
-
토론 #13
기호 링크가 아니었을 때 분명히 모든 것이 좋았다.-
.git
기호를 이름이 .git
로 끝나지 않는 디렉토리에 연결하면 .git
두 번 실행할 때 쓰레기가 표시되고Gstatus
작동하지 않으며 거의 모든 내용이 손상됩니다.- 기호
Gcommit
를 이름이 .git
로 끝나는 디렉토리에 링크하면 기호 링크가 대상을 참조하는 방법에 따라 결과가 달라집니다.- 기호 링크가 상대적인 경우
.git
어떤 것들은 작동할 수 있지만 때로는 오류가 발생할 수 있다.- 만약 기호 링크가 절대적인 경우
ln -s ../myrepo.git ./.git
라면 내가 아는 바에 의하면 모든 것이 좋은 것 같다.만약 누군가가 그 어떤 관찰도/반박할 수 있다면 안심하십시오.나는 지금 모든 것이 돌아가고 있는 것 같아서, 나는 이 때문에 스트레스를 느끼지 않았다.
ln -s /Users/sjl/src/myrepo.git ./.git
그래, 거짓말했어.절대 기호가 연결된 장면에서 여전히 한 가지 일이 깨졌다.커서가 토론 #14
창에 있을 때:Gcommit
실행 중이면 메시지를 입력한 다음 Gstatus
오류를 던지고 버퍼를 닫으며 제출을 실행하지 않습니다.커서가 다른 버퍼 (프로젝트의 파일) 에 있을 때 :wq
를 실행하면 정상적으로 실행됩니다.:Gcommit
토끼굴을 또 한 바퀴 돌았다.내가 이전의 평론에서 말한 것은 사실이지만, 이것은 단지 네가 처음이다. 토론 #15
이후 매번 시도할 때마다 당신은 다음과 같은 것을 얻을 수 있다."~/src/pculture/unisubs.git/COMMIT_EDITMSG" 14L, 510C written
Error detected while processing function <SNR>35_FinishCommit..<SNR>35_Commit:
line 7:
E344: Can't find directory "`=s:repo().tree()`" in cdpath
E472: Command failed
Error detected while processing function <SNR>35_FinishCommit:
line 4:
E171: Missing :endif
Press ENTER or type command to continue
Vim을 닫고 다시 열면 다시 제출할 수 있습니다. 그러면 오류가 발생합니다.
Reference
이 문제에 관하여(Gstatus의 헤드 교체 실패), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/tpope/vim-fugitive/issues/105텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)