2012-03-13 4 views
0

디렉토리 트리를 재귀 적으로 내려가는 스크립트를 작성하고 "clean"인 모든 리포지토리에 hg pull -u를 수행합니다. 즉, 로컬 diff가없고, 나가는 변경 집합 또는 원격으로 다른 것으로 만들 수있는 다른 것. (스크립트는 다시 작성하는 등)로컬 저장소가 "깨끗한"경우에만 hg pull/update

저장소가 "깨끗한"것인지 확인하는 좋은 방법이 있습니까? 내가 bash 또는 python 스크립트에서이 작업을 수행하고 있음을 명심하십시오.

답변

0

hg status은 (는) 친구입니다. 그러나 "깨끗한"것이 무엇을 의미하는지주의해야합니다. 디렉토리 구조의 모든 파일이 버전 제어하에 있고 변경되지 않은 파일이있는 경우 hg status은 콘솔 출력을 반환하지 않으며 0 반환 코드를 반환해야합니다.

이것이 깨끗한 정의와 일치하지 않는 경우 더 신중해야합니다. 예를 들어, 일반적으로 생성 된 파일 (바이너리, Latex 등의 PDF)을 버전 관리에 추가하지는 않지만 내 디렉토리 구조 안에 있습니다. 이 경우 이러한 파일은 '알 수 없음'으로 표시되며 hg의 반환 코드가 다를 수 있습니다.

+0

나가는 변경 집합이있는 경우 hg status가 0을 반환합니까? 업데이트가 병합 될 수 있다면 hg pull -u를하고 싶지 않습니다. 나는 (별도로) hg 팁이 원격 저장소의 것과 일치하는지 확인해야 할 것 같아요? – jhourback

+0

'hg status'는 로컬 수정이 있어도 항상 0을 반환합니다. 나는 python/bash에서 출력물을 파싱 할 수 있다고 생각하지만, 약간 지저분하다. – jhourback

+0

@jhourback - 1. pull ** 로컬에서 pullted changesets를 병합하지 마십시오. 2. hg st | wc -l은 깨끗한 WC에서 0을 반환하고, 3. hg out 결과는 pull 가능성과 상관 관계가 없습니다 (읽기 p.1) –

관련 문제