2014-01-12 3 views
0

내 자식 repo의 최상위 레벨을 찾으려고하지만 현재 git repo에 있지 않으면 자동으로 실패합니다. 이 코드는 git 최상위 레벨이나 명령 행 옵션을 취할 수있는 다른 스크립트 내에서 호출됩니다. "아니 자식 저장소 치명적"예를 들어,조용히 실패하고 null을 반환하려면 git rev-parse가 필요합니다.

gpath = `git rev-parse --show-toplevel --quiet` 
if (gpath == null) && (options.path == null) 
    puts help 
end 

는 내가 얻을 쉘 프롬프트 @ 단지 자식 코드를 시도하십시오. --verify 스위치를 추가하려고 시도했는데 동일한 결과가 나타납니다. 누구든지이 작업을 수행하는 방법을 알고 있습니까?

+1

스크립팅중인 셸은 무엇입니까? 제발 그것이 (t) csh가 아니라고 말해주세요! http://www.grymoire.com/unix/CshTop10.txt – Johnsyweb

+0

다양한 쉘에서 git 명령을 지원해야합니다. Ruby에서 현재 프로그램을 작성하고 있습니다 (그러나 여러 쉘에서 조용히 실행되도록 명령을받을 수는 없습니다). tcsh를 삭제하는 문제를 편집 중입니다. 문제가 혼동 될 것이라고 생각하기 때문입니다 (실패 모드는 각 쉘에서 동일합니다). –

답변

1
if GPATH=`git rev-parse --show-toplevel --quiet 2>/dev/null`; then 
    echo "repo: $GPATH" 
else 
    echo "not a repo" 
fi 

2>/dev/null는을/dev/null (아무)에 표준 오류 (표준 오류)에서 치명적인 오류 메시지를 리디렉션합니다. 이 경우 git rev-parse은 실패 상태로 종료되며 위와 같이 if 문을 사용하여 확인할 수 있습니다.