Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

ghi : 커맨드라인 Github 이슈 관리도구

보통 할일을 Todo로 관리하는 편이긴 하지만 개인적으로 하는 프로젝트의 세부내용을 Todo로 관리하기는 쉽지 않았다. 그동안은 개인프로젝트에서 이슈트랙커를 따로 사용하고 있지 않았지만 이제 프로젝트도 개별적으로 좀 잘 관리해야겠다는 생각이 들어서 Github의 이슈를 좀 잘 사용해 보기로 했다. Github의 이슈는 커밋히스토리랑도 잘 연계되니까 이런저런 이점도 많고... 근데 이슈관리때문에 Github 사이트를 들락달락 하는건 영 귀찮았다. 특히 커밋히스토리에 관련된 이슈번호를 남겨야 하니까 매번 Github 사이트에 가서 이슈를 봐야했기 때문에 쓸만한 도구를 찾아봤다.


ghi
ghi는 커맨드라인에서 Github 이슈를 관리할 수 있는 도구다. 기능도 잘 동작하고 최근까지 커밋하고 있는 걸로 보아 아직 잘 관리가 되고 있다. 보통 Git을 커맨드라인에서 관리하고 있으므로 항상 작업중인 프로젝트는 터미널을 열어놓고 있기 때문에 ghi를 사용해서 쉽게 이슈를 관리할 수 있게 되었다.


설치
쉘 명령어를 제공하고 있으므로 다음 명령어를 사용해서 간단하게 ghi를 설치할 수 있다.

$ curl -s https://raw.github.com/stephencelis/ghi/master/ghi > ghi && \
  chmod 755 ghi && \
  mv ghi /usr/local/bin

이 명령어는 ghi를 다운 받아서 /usr/local/bin으로 복사하는 명령어다.  명령어를 다른 곳에서 관리하고 싶다면 첫 명령어만 실행해서 원하는 곳에 복사해도 된다.

ghi로 이슈관련된 대부분의 기능을 사용할 수 있지만 권한이 필요한 작업(이슈 생성이나 수정 등)은 인증을 해야 사용할 수 있다.

ghi 인증을 진행하는 화면

위와 같이 인증은 ghi config --auth GITHUB_ID로 인증을 할 수 있다. 인증을 받으면 터미널에 나온것 처럼 ghi가 사용할 아이디와 인증토큰을 git 전역설정에 추가해야 한다. 화면에 나온 명령어를 실행해주면 된다. 사용할 수 있는 모든 명령어는 ghi만 입력하면 볼 수 있다.


이슈 조회
ghi list로 이슈를 조회한 화면

이슈는 ghi list를 입력하면 현재 프로젝트에 오픈된 이슈목록을 위와 같이 보여준다. Github에서 받아온 git 저장소인 경우에는 별도로 저장소를 지정할 필요없이 ghi list만으로 바로 조회를 해온다.(이 부분이 가장 편한것 같다. 프로젝트 별로 자유롭게 쓸 수 있어서.) 위 화면 처럼 아주 이쁘게 라벨까지 색칠되서 잘 나온다. 우측에 @ 표시는 자신에게 할달된 이슈라는 의미이다.


이슈 관리
이슈는 ghi edit ISSUE_NUMBER로 할 수 있다. 명령을 실행하면 Vim가 열리고 커밋 메시지 수정하듯이 이슈 내용을 변경하고 저장하면 해당 이슈가 수정된다.

ghi edit로 이슈를 수정한 화면

Github에서 하듯이 이슈에 댓글을 달 수도 있도 ghi comment ISSUE_NUMBER를 입력하면 마찬가지로 Vim이 열리고 이슈 내용을 입력하면 된다.(한글도 잘 된다. ㅎ)

ghi comment로 이슈에 댓글을 단 화면

특정 이슈의 자세한 내용을 보려면 ghi show ISSUE_NUMBER를 사용하면 된다. 해당 이슈의 자세한 내용과 댓글까지 한꺼번에 볼 수 있다.

ghi show로 특정 이슈를 자세히 본 화면

이슈를 닫을 때는 ghi close ISSUE_NUMBER를 사용한다. 다음 화면은 앞에서 열려있던 2번 이슈를 닫고 다시 조회했을 때 나오지 않는 화면이다.

ghi close로 이슈를 닫은 화면

기본적으로 ghi list를 사용하면 오픈된 이슈만 조회되는데 닫힌 이슈를 조회하고 싶다면 ghi list -s 'closed'를 사용하면 된다. 이렇게 닫은 이슈를 다시 열고 싶다면 ghi open ISSUE_NUMBER를 사용하면 다시 열수 있다. (reopen 명령어도 된다.)

ghi list -s 'closed'로 닫힌 이슈를 조회하고 ghi open으로 이슈를 재오픈한 화면

ghi assign ISSUE_NUMBER를 사용하면 특정 이슈를 자신에게 할당할 수 있고 ISSUE_NUMBER뒤에 사용자를 지정하면 다른 사용자에게 이슈를 할당할 수 있따.

ghi assign으로 이슈를 자신에게 할당한 화면

ghi milestone를 사용하면 현재 프로젝트에 등록된 마일스톤을 볼 수 있다.

ghi milestone으로 마일스톤 목록을 조회한 화면
물론 새로운 이슈를 등록할 수 도 있다. 이슈 등록은 ghi open 명령어를 사용하는데 -m 옵션으로 내용을 작성하고 -M 으로 마일스톤을 지정하고(앞에서 조회한 마일스톤의 번호로 지정한다.) -L로 라벨을 지정한다. 여기서 --claim은 자신에게 이슈를 할당하도록 하는 옵션이다.

ghi open으로 새로운 이슈를 등록한 화면
추가적으로 ghi open -w를 하면 바로 웹페이지가 열리면서 해당 프로젝트의 이슈 등록화면으로 이동한다. 옵션 주기가 귀찮거나 입력할 내용이 많을때 유용해 보인다.


원래는 커맨드라인에서 간단히 Github 이슈를 조회할 수 있는 정도를 기대했는데 ghi는 기대 이상으로 강력하다. 일부는 ghi보다 웹에서 하는게 편할수도 있겠지만 ghi를 쓰면 이슈때문에 현저히 줄어들 것으로 보인다. 각 명령어에 대한 자세한 옵션은 --help 옵션을 주면 볼 수 있다.
2013/03/17 17:25 2013/03/17 17:25