hg log -G 옵션을 사용하면 콘솔에서도 GUI 프로그램처럼 리비전 그래프를 볼 수 있음.


원래는 graphlog 라는 extension이었으며 hg glog 라는 명령어로 동작했으나, 

Mercurial 2.3 부터 기본 탑재되어 hg log -G 옵션으로 동작함.

참고: http://mercurial.selenic.com/wiki/GraphlogExtension




 

그냥 전체 그래프를 5개만 출력해보는 예제.

@ 으로 표시되는 노드가 working directory의 parent임.


// 그냥 전체 그래프 출력 5개만
C:\rep> hg log -G -l 5
@  changeset:   46606:25a0544568b8                                                       
|  branch:      default                                                               
|  parent:      46600:e1340b4945ae                                                       
|  parent:      46605:264ba2e62709                                                       
|  user:        lu bu feng xian                                                                    
|  date:        Fri Aug 01 09:57:25 2014 +0900                                           
|  summary:     Merge with X                             
|                                                                                        
o    changeset:   46600:e1340b4945ae                                                     
|\   branch:      default                                                              
| |  parent:      46531:43f93c470105                                                     
| |  parent:      46599:1d5415dbc639                                                     
| |  user:        lu bu feng xian                                                                  
| |  date:        Thu Jul 31 14:38:11 2014 +0900                                         
| |  summary:     Merge with Y                            
| |                                                                                      
| | @  changeset:   46585:3084bae78a21                                                   
| | |  branch:      task-661                                                    
| | |  parent:      46563:bd94531ebaa9                                                   
| | |  user:        cdbaek                                                               
| | |  date:        Tue Aug 05 11:56:41 2014 +0900                                       
| | |  summary:     나머지 작업                   
| | |                                                                                    
| | o  changeset:   46563:bd94531ebaa9                                                   
| | |  branch:      task-661                                                    
| | |  user:        cdbaek                                                               
| | |  date:        Mon Aug 04 11:41:08 2014 +0900                                       
| | |  summary:     close branch                              
| | |                                                                                    
| | o  changeset:   46562:fb02058aaef1                                                   
| | |  branch:      task-661                                                    
| | |  user:        cdbaek                                                               
| | |  date:        Mon Aug 04 11:40:40 2014 +0900                                       
| | |  summary:     6558 처리                              
| | |                                                                                                                            





일반적인 log의 옵션들이 다 먹음.

아래는 현재 브랜치의 그래프 5개 출력. merge가 2회 일어났음을 알 수 있음.



C:\rep> hg log -G -b . -l 5
@    changeset:   46616:30241b35069a
|\   branch:      task-664
| |  tag:         tip
| |  parent:      46610:bdd75077a06d
| |  parent:      46615:c8defd6f3f22
| |  user:        cdbaek
| |  date:        Wed Aug 06 14:50:24 2014 +0900
| |  summary:     Merge
| |
| o  changeset:   46611:e48cc03d2a0d
| |  branch:      task-664
| |  parent:      46609:8bb5cba78001
| |  user:        lu bu feng xian
| |  date:        Wed Aug 06 11:25:04 2014 +0900
| |  summary:     8017 처리
| |
o |  changeset:   46610:bdd75077a06d
|/   branch:      task-664
|    user:        cdbaek
|    date:        Wed Aug 06 14:47:46 2014 +0900
|    summary:    8010 처리
|
o    changeset:   46609:8bb5cba78001
|\   branch:      task-664
| |  parent:      46607:40b4f5f62d2c
| |  parent:      46608:7ad518e728e5
| |  user:        cdbaek
| |  date:        Wed Aug 06 11:03:54 2014 +0900
| |  summary:     Merge
| |
o |  changeset:   46607:40b4f5f62d2c
|/   branch:      task-664
|    parent:      46591:016a4b24b63f
|    user:        cdbaek
|    date:        Wed Aug 06 11:02:47 2014 +0900
|    summary:     이상한 짓을 했다..
|




style 지정으로 좀 더 간략한 모양새로 보는게 더 좋음.



C:\rep> hg log -G -b . -l 5 --style compact
@    46616[tip]:46610,46615   30241b35069a   2014-08-06 14:50 +0900   cdbaek
|\     Merge
| |
| o  46611:46609   e48cc03d2a0d   2014-08-06 11:25 +0900   lu bu feng xian
| |    8017 처리
| |
o |  46610   bdd75077a06d   2014-08-06 14:47 +0900   cdbaek
|/     8010 처리
|
o    46609:46607,46608   8bb5cba78001   2014-08-06 11:03 +0900   cdbaek
|\     Merge
| |
o |  46607:46591   40b4f5f62d2c   2014-08-06 11:02 +0900   cdbaek
|/     이상한 짓을 했다..
|





template 옵션을 이용하여 나만의 출력형식 지정가능.



C:\rep> hg log -G -b . -l 5 --template "{rev}:[{branch}] {author|user}: \"{desc}\"\n"
@    46616:[task-664] cdbaek: "Merge"
|\
| o  46611:[task-664] lu bu feng xian: "8017 처리"
| |
o |  46610:[task-664] cdbaek: "8101 처리"
|/
o    46609:[task-664] cdbaek: "Merge"
|\
| |
| o  46607:[task-664] cdbaek: "이상한 짓을 했다.."
|/





아예 alias 를 하나 만들어서 쓰는 것도 편함.

아래는 hgrc 파일에 glog 라는 alias를 지정. 


콘솔에서 hg glog 라고 입력하면 graphlog 형식의 로그가 지정한 template 모양대로 20개 출력됨.


[alias]
glog = log -G -l 20 --template "{rev}:[{branch}] {author|user}: \"{desc}\"\n"









Posted by bloodguy
,