2010-07-23 3 views
3

x :/projects/repo1에 repo가 ​​있습니다. hg update null을 사용하여 작업 디렉토리를 비 웠습니다. 거기에서 로컬 디렉토리로 일부 파일의 최신 버전을 추출하고 싶습니다. 빈 작업 디렉토리에서`hg cat`을 어떻게 사용합니까?

나는 노력이 : 작업 디렉토리가 비어 있지 않은 경우

scripts\*.sql: No such file in rev 14f07c26178b 

같은 명령은 잘 작동 :

x:\projects\repo1> hg cat -o c:\sql\%s scripts\*.sql -r tip 

나는이 오류가 발생합니다. 왜 이것이 작동하지 않는 좋은 이유가 있습니까? 아니면 거기에서 로컬 디렉토리로 일부 파일을 추출하는 또 다른 방법을 알고 있습니까?

답변

3

hg cat 명령은 단일 파일 용입니다. 여러 파일을 원할 경우 hg archive 명령을 사용하면 zip 파일이나 디렉토리를 파일로 가득 채울 수 있습니다. 귀하의 명령은 다음과 같습니다.

x:\projects\repo1> hg archive --include scripts\*.sql -r tip c:\sql 
+0

+1. 내 방식보다 훨씬 쉽습니다. :) –

2

hg cat은 경로에서 와일드 카드 기호를 지원하지 않는 것으로 보입니다. 당신을 위해

작업 카피가 tip 개정으로 최신입니다
hg cat -r tip scripts/foo.sql 

, 쉘이하는 와일드 카드 대체 : 그래서 당신은 전체 파일 이름을 사용해야합니다.

hg manifest 명령은 또한 추적 된 파일 목록을 가져 오는 데 도움이 될 수 있습니다.

hg manifest --rev tip 

파일의 목록을 가져 오려면 :

hg manifest 당신이 당신의 저장소에있는 모든 파일의 목록을 확인하는 데 사용할 수있는 --rev 인수를 취합니다

+0

이것은 유용합니다. 그러나 추출 할 파일의 이름을 알지 못합니다. 두 명령 모두 빈 작업 디렉토리에서 잘 작동하지 않기 때문에'hg manifest' 또는'hg status --all'을 사용하여 나열 할 수 없습니다. – Sylvain

+0

@Sly'hg manifest'는 보려는 리비전을 지정하는'-r' 옵션을 가지고 있습니다. –

+0

Windows 쉘은 와일드 카드를 확장하지 않습니다. –

2

이 답변 Andrey's answer에 대한 내 댓글에있다 끝 부분의 패턴과 일치 시키려면 다음을 사용하십시오 :

거기에서 출력을 파일로 재 지정하고 각 행을 편집 할 수 있습니다 원래 질문 에서처럼 hg cat 명령에 입력하십시오. hg cat은 지정된 리비전에서 저장소의 내용이 아닌 작업 디렉토리의 내용을 사용하여 glob-matching을하기 때문에 (최소한 실험을 해본 결과 나름), 정확한 이름을 알면 파일의 내용은 hg cat입니다.

+0

예,이 명령을 사용하면 개정판을 나열 할 수 있습니다. –

관련 문제