2009-05-08 5 views
2

mercurial을 사용하여 디렉토리를 백업하기 위해 매일 실행되도록 스케줄링 할 쉘 스크립트를 작성해야합니다. 스크립트가 실행되는 동안 자동화 된 로그인을 수행하는 방법을 알아낼 수 있다는 점을 제외하고 대부분의 유스 케이스가 완료되었습니다.자동 백업 스크립트에서 로그인 처리

for REPOSITORY in [email protected] 
do 
    cd $REPOSITORY 

    # commit the changes 
    hg commit -A -m "Commit changes `date`" 

    # push the changes to the remote repository 
    if hg push 
    then 
     logger hg push success 
    else 
     logger hg push failure 
    fi 
done 

hg push 명령을 실행하면 로그인 프롬프트가 표시됩니다.

+0

이 시도했지만 작동하지 않습니다 - 스크립트를 실행하십시오 : sh foo.sh. <.login # 여기서 .login은 사용자 이름과 암호를 저장하는 파일입니다 ... 그리고 내 쉘 스크립트 파일에서 내 hg push 명령문은 hg push가됩니다. 사용자를 읽는다; echo $ user; 읽기 패스. echo $ pass; – Jeffrey04

답변

3

의욕 당신이 저장소 URL에 사용자 이름과 암호를 넣을 수 있습니다 : 명령 줄에 URL을 넣어하지 않으려면

hg push http://username:[email protected]/repo 

가 로컬 저장소에 대한 hgrc 파일을 편집 할 수 있으며, default-push URL에 사용자 이름과 암호를 넣어 :이 어떤 hg pushhgrc 파일에 지정된 사용자 이름을 사용하는 것을 의미합니다

default-push = http://username:[email protected]/repo 

.

+0

이렇게하면 잠재적 인 보안 위험이 무엇입니까?! 편집증에 빠져서 죄송합니다 ... – Jeffrey04

+0

암호를 넣은 파일 (th 스크립트 또는 hgrc)을 읽을 수있는 사람은 원격 저장소에 대한 푸시 액세스 권한이 있습니다. 보낸 변경 사항을 항상 롤백 할 수 있기 때문에 저장소에 영구적 인 손상을 줄 수는 없지만 많은 시간을 낭비하고 원본 기록을 오염시킬 수 있습니다. –

7

비대화 형 로그인을 위해 백업 스크립트를 구성해야한다는 것에 동의합니다. 한 가지 방법은 use SSH keys이고 더 간단한 해결책은 URL에 직접 암호를 포함시키는 것입니다.

Mercurial 1.3을 사용하면 구성 파일에 HTTP 암호를 훨씬 쉽게 포함 할 수 있습니다. 내 구성 파일에

[auth] 
bb.prefix = https://bitbucket.org/mg/ 
bb.username = mg 
bb.password = pw 

섹션이 있습니다. 즉, 암호를 여러 파일에 저장하는 것을 피하고 하나의 파일 보안에만 집중할 수 있습니다.

다른 사람들에게 그 파일을 보여주고 싶을 수도 있기 때문에 실제로 암호를 ~/.hgrc에 넣지 않기 위해 다른 새로운 기능을 사용하고 있습니다. 대신에 나는 ~/.hgrc

%include .hgauth 

을 가지고 ~/.hgauth[auth] 섹션을 가지고 있으며, 혼자 읽을 수있다.