2013-12-17 1 views
0

다음은 프로젝트 디렉토리를 가로 지르고 원격 저장소에서 가져 오는 간단한 쉘 스크립트입니다. 이제는 원격 저장소가 암호를 묻는 메시지를 입력 할 때 for 루프가 실행을 멈추는 문제가 있습니다. 예를 들어 디렉토리를 통한 반복이 중지됩니다. 그래서 나는 단지 내가 디렉토리를 반복하면서 어떻게 암호를 입력하고 디렉토리가 완성 된 후에도 프로 시저를 반복하는 방법을 알고 싶다. "쉘 원격 저장소에서 코드 풀링을 자동화하기위한 스크립트

for item in * 
do 
if [ -d $item ] 
then 
    cd $item 
    hg pull 
fi 
done 

답변

2

워크 플로에서 암호를 가져와야합니다. HTTP를 사용하는 경우 hgrc의 [auth] 섹션을 사용자로 지정하고 ssh : // URL을 사용하는 경우 ssh-agent를 사용해야합니다.

당신의 루프는 수동으로 패스워드를 입력 한 후에도 계속 진행됩니다.하지만 패스워드를 처음 입력 한 후에는 잘못된 디렉토리에 있기 때문에 다음 저장소로 cd 할 수 없습니다. hg 당기기 후 cd ..해야합니다. 또는 같은과 함께 할 것입니다 : 아무리 깊은, 현재 디렉토리 아래의 모든 저장소를 발견하지 않으며, 그 위에 풀을 수행

for repo in $(find . -type d -name .hg) ; do 
    hg pull --repository $(dirname $repo) pull 
done 

- 그것은 저장소없는 디렉토리와 파일을 무시합니다.

+0

감사합니다. btw는 쉘 스크립트를 배우기위한 훌륭한 책/자료를 제안 해 주시면 감사하겠습니다. 나는 그걸 봤 거든 그것에 대한 몇 가지 답변을 찾았지만 당신 같은 대단히 경험 많은 프로그래머로부터 제안을 알고 싶습니다. 감사. –

+0

ㅎ, 고마워.하지만이 물건에는 정말 힘든 경험이있다. 당신이 각 조각을 이해할 때까지 깔끔한 무엇인가를 수행하고 그것을 골라내는 하나의 라이너를 찾으십시오. 'man bash'도 읽기 시작합니다. –

+0

글쎄, 할거야. 고맙습니다! –

관련 문제