program story

OSX 10.10 yosemite beta on git pull : git-sh-setup : No such file or directory

inputbox 2020. 9. 5. 09:54
반응형

OSX 10.10 yosemite beta on git pull : git-sh-setup : No such file or directory


OSX 10.10 Yosemite Beta로 업그레이드 한 후 실행 git pull하면 다음 오류가 반환됩니다.

/ Library / Developer / CommandLineTools / usr / libexec / git-core / git-pull : 11 행 : git-sh-setup : 해당 파일 또는 디렉토리 없음

참조 된 git-core 디렉토리를 확인했고 git-sh-setup.sh가 거기에 있습니다.

다른 git 명령이 예상대로 정확히 작동합니다.


현재로서는 가장 깨끗한 해결책은 iTerm 세션의 초기 명령을 다음과 같이 변경하는 것입니다.

/usr/bin/login -f <your user name>

이것은 나를 위해 문제를 해결합니다.

문제 분석을위한 추가 데이터 포인트 : 10.10에서는 PATH 환경 변수의 여러 사본이 존재하고 서브 쉘이 두 번째 사본을 선호하는 것 같습니다.

iTerm이 시작한대로 콘솔에서 코코아 애플리케이션을 실행하여이를 재현 할 수 있습니다. 다음과 같은 경고가 표시됩니다.

2014-06-04 19:23:09.859 gitx[14676:362580] *** -[NSProcessInfo environment]: Warning: duplicate definition for key 'PATH' found in environment -- subsequent definitions are ignored.  The first definition was '(the path I have configured in my shell)', the ignored definition is '/usr/bin:/bin:/usr/sbin:/sbin'.

나는 이것이 iTerm이 아닌 10.10에서 문제라고 생각하지만 iTerm 이하는 일이 그것이 스스로를 드러내는 원인입니다 (이는 Terminal.app에서는 발생하지 않습니다)

업데이트 : 이것은 iTerm이 환경에 "흥미로운"일을하기 때문에 발생합니다. 이 문제를 해결하려면 iTerm 2.0의 공식 릴리스로 업데이트하십시오.


나는 이것이 zsh를 사용할 때 iTerm의 버그라고 생각합니다. 그들은 의도적으로 / usr / bin / login을 호출하지 않으며 execle을 사용하여 환경 변수를 지우지 않습니다.


최신 버전의 iTerm2를 다운로드하면이 문제가 해결되었습니다!


또 다른 해결책, iTerm2 수정

cd /Applications/iTerm.app/Contents/MacOS
mv iTerm iTerm-bin

cat > iTerm <<EOF
#!/bin/sh
unset PATH
\${0}-bin
EOF

chmod +x iTerm

끝난.

Yosemite와 함께 iTerm2를 즐기십시오!


임시 솔루션으로 git-pull 줄 11, 12 및 336을 다음과 같이 수정했습니다.

. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup

. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-i18n

eval="/usr/local/Cellar/git/2.0.0/libexec/git-core/git-merge $diffstat $no_commit $verify_signatures $edit $squash $no_ff $ff_only"

이것은 현재 git-pull을 수정하지만 더 나은 솔루션이 있다고 확신합니다.


공식적인 수정이 나오기 전에 Git이 작동해야하는 경우 임시 수정 (Homebrew 및 Git 2.0.0 가정)이 있습니다. 두 개의 쉘 변수를 설정했습니다.

export GIT_PATH="/usr/local/Cellar/git/2.0.0/bin"
export GIT_CORE_PATH="/usr/local/Cellar/git/2.0.0/libexec/git-core"

...의 인스턴스 git를 적절한 절대 링크 로 대체했습니다 . 다음 Gists를 사용하여 동일한 작업을 수행 할 수 있습니다.

  • /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup/git-sh-setup으로 바꿉니다.
  • /usr/local/Cellar/git/2.0.0/libexec/git-core/git-stash/git-stash로 바꿉니다.
  • /usr/local/Cellar/git/2.0.0/libexec/git-core/git-pull/git-pull로 바꿉니다.

이것은 확실히 해킹이지만 당신이 갈 것입니다.

편집 :이 작업을 수행하기 전에 @pilif의 답변을 확인하십시오 ...


Ubiquill의 해결 방법은 git rebase (그리고 아마도 다른 기능이 작동하지 않는 것)에도 적용됩니다. 이 경우 47 행과 48 행을 다음 *로 바꾸어야합니다.

. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup
. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-i18n

*이 경로는 homebrew와 함께 git이 설치되어 있고 /usr/local/Cellar/git/2.0.0/ 내부에 있다고 가정합니다.


git-pull 파일을 편집하고 그 위에이 줄을 추가합니다 (주석 블록 바로 뒤에).

PATH="$(dirname $0):$PATH"

또는 복사하여 터미널에 붙여 넣으십시오.

ed -s $(which git-pull) <<< $'6i\nPATH="$(dirname $0):$PATH"\n.\nwq'

업데이트 : 마지막 iTerm2 업데이트 (1.0.0.20140629) 이후 pilif가 추정 한대로이 재정의 git-pull없이 제대로 실행됩니다 PATH.


git-rebase.sh에 대한 업데이트가 있습니다.

https://github.com/git/git/pull/110/files


업데이트 : 여전히 아래 언급 된 릴리스로 작동하지 않습니다. 내 실수입니다. 힘내 푸시가 작동합니다 힘내 풀이 작동하지 않습니다.

It seems to me that the issue has been fixed by Apple with Mac OS X Yosemite 10.10 (14A329r). i am on the general Beta Yosemite channel (not developer). Git push/pull works as expected again without any modifications.

참고URL : https://stackoverflow.com/questions/24022582/osx-10-10-yosemite-beta-on-git-pull-git-sh-setup-no-such-file-or-directory

반응형