입문서 - 저장소의 이력을 알아봅니다
여기까지 KoreanTutorialClone을 따라서 저장소를 복제한 상황입니다; 그럼 이제 로컬 카피를 my-hello라고 합시다.
이 저장소의 이력을 봐볼까요? 그러기 위해서는, log 명령을 씁니다. 이 명령은 저장소에 일어난 모든 일들을 요약하여, 최근의 일부터 시간의 역순으로 표시합니다.
$ cd my-hello $ hg log changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile changeset: 0:0a04b987be5a user: mpm@selenic.com date: Fri Aug 26 01:20:50 2005 -0700 summary: Create a standard "hello, world" program
위와 같은 출력으로 몇가지 사실을 서술하고 있습니다.
각 단락은 하나의 변경집합을 나타냅니다. 변경집합이라함은 1개 이상의 파일 병경을, 1개의 논리적인 단위로 모아놓은 것입니다.
changeset은 그 변경집합의 고유 ID입니다.
user는 그 변경집합을 작성한 사람을 가리키는 것으로, 자유로운 형식의 문자열입니다; 보통 이메일 주소를, 종종 사람의 이름도 포함됩니다.
date은 언제 그 변경집합이 작성되었는가를 가리킵니다. 이 일시 정보는 그 변경집합의 작성자의 지역의 시간대로 표시됩니다.
summary는 그 변경집합의 설명의 맨 처음 줄을 표시합니다. 이것은 그 변경집합의 목정을 자신과 다른 사람들이 이해할 수 있게 돕기 위해, 그 변경집합의 작성자가 작성시 입력하는 것입니다.
parent는 변경집합의 부모를 가리킵니다. 몇개의 저장소로부터 변경을 병합한 경우는, 이것이 복수가 되는 일이 있습니다.
- 대부분의 경우, 부모는 1개뿐으로, 그 변경집합보다도 오래된 변경집합을 1개 가리킵니다. 이것은 위의 예에도 해당합니다.
-v 설정을 쓰면, 더욱 자세한 이력정보를 얻을 수 있습니다. --debug 전역 설정을 쓰면 하늘 아래 모든 것이 출력됩니다.
$ hg log -v changeset: 1:82e55d328c8ca4ee16520036c0aaace03a5beb65 tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 files: Makefile description: Create a makefile (...) $ hg log --debug manifest: 1:0c7c1d435e6703e03ac6634a7c32da3a082d1600 changeset: 1:82e55d328c8ca4ee16520036c0aaace03a5beb65 tag: tip parent: 0:0a04b987be5ae354b710cefeba0e2d9de7ad41a9 parent: -1:0000000000000000000000000000000000000000 user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 files+: Makefile description: Create a makefile (...)
상세한 출력은 기본 출력보다 몇개 더 많은 필드를 포함하고 있습니다.
changeset은 생력되지 않은 ChangeSetID를 표시하게 됩니다.
files은 그 변경집합으로 변경된 파일을 나열합니다.
description은 그 변경집합의 설명을 한줄이 아닌 여러줄로 전부 나타냅니다.
- 위 예에서는, 설명 자체가 1줄밖에 안되어서 별 차이는 없습니다.
--debug 출력은 상제한 출력에 더해 다음의 필드를 표시합니다.
file+는 이 변경집합에서 추가된 파일을 나열합니다.
file-는 이 변경집합에서 삭제된 파일을 나열합니다.
manifest는 이 변경집합의 매니페스트 ID를 표시합니다.
2개의 parent 필드는 이 변경집합의 두 부모의 변경집합 ID를 표시합니다. -1:0000000000000000000000000000000000000000는 무효인 부모를 참조하고 있습니다.
-r 설정을 쓴 log 명령은 특정 변경집합을 표시합니다.
$ hg log -r1 changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile
-r 설정은 실제로는 변경집합의 범위를 지정하는 데에 매우 유연한 구문을 지원하고 있습니다. 하지만, 이 예제의 저장소에서는, 쓸 수 있는 변경집합의 수가 제한되어 있어서, 그 위력을 보여줄 수 없습니다. 자세한 것은 Mercurial의 메뉴얼 페이지를 참고하세요.
-p 설정을 쓴 log 명령은, 그 변경집합에 관련된 패치를 표시합니다.
$ hg log -r1 -p changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile diff -r 0a04b987be5a -r 82e55d328c8c Makefile --- /dev/null Fri Aug 26 01:20:50 2005 -0700 +++ b/Makefile Fri Aug 26 01:21:28 2005 -0700 @@ -0,0 +1,1 @@ +all: hello
tip, 즉 최신 변경집합의 정보를 표시하는 데에 tip 명령을 쓸 수 있습니다. tip 명령은 log -r tip에의 단축이라고 생각할 수도 있습니다.
$ hg tip changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile $ hg log -r tip changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile
뭔가 감이 오고 있으니까, 이제 변경을 가해봅시다! KoreanTutorialFirstChange으로 넘어갑니다.