query 명령어로 게릿에서 데이터 뽑기

게릿(Gerrit)의 리뷰 히스토리는 게릿 웹 페이지의 검색 기능을 통해 확인하거나, 게릿의 query 명령어를 통해 텍스트 데이터로 추출할 수 있다.

여기서는 query 명령어를 이용해 히스토리를 뽑아내자. 아래는 명령어 예제다.

$ ssh -p 29418 review.example.com gerrit query --format json --patch-sets --comments after:2019-6-1 before:2019-7-1 project:tools/gerrit

명령어는 review.example.com 서버에 접속하여 gerrit query 명령어를 사용하고 있다. (참고로, 29418은 Gerrit의 기본 포트 번호다.) query 명령어의 옵션 중에 헷갈리는 것들만 몇 개 살펴보자.

  • 출력 결과는 텍스트(–format text)이나 JSON(–format json) 둘 중 하나로 표시할 수 있다. 출력 결과를 바로 볼 목적이라면 텍스트가 낫지만, 재가공할 목적이라면 JSON이 낫다.
  • after는 표기한 날자를 포함하고, before는 표기한 날자를 표기하지 않는다.  위 명령어 예제로 설명하면, 6월 1일 리뷰는 포함되고 7월 1일 리뷰는 포함하지 않는다. 즉, 6월 한달 리뷰만 반환하는 셈이다.
  •  예시에는 포함되지 않았으나, –limit:500 옵션이 기본 옵션 값이다. 이 옵션은 Gerrit 시스템의 기본 제약 사항이다. 500보다 더 작을 수는 있지만, 클 수는 없다. 추가적인 권한이 있어야 –limit:500 제약을 벗어날 수 있다는데 나는 권한을 얻을 수 없었다. before / after 옵션을 활용해 1개월 단위로 나누어 검색해 검색 결과량을 500개 이하로 줄였다. query 명령어 도움말 속에 언급된 –start 옵션을 사용할 수도 있을 것이다.

참고

내 시간을 절약하는 git 명령어들

깃의 명령어를 소개하는 글이 아닌, 개인적으로 자주 쓰지만 자꾸 잊어버리는 명령어만 모아두는 글이다. 전체 명령어를 훑어보고 싶다면 깃의 공식 도서를 참고하자.

특정 텍스트가 포함된 commit 검색

>git log -S<텍스트>

특정 텍스트가 추가되거나, 삭제된 commit을 검색해 준다.

머지

>git merge --no-ff -Xtheirs <브랜치 이름>

merge 시, FF가 가능하더라도 merge commit을명시적으로 만든다. merge 할때, 타겟 브랜치의 파일에 우선순위를 준다.

머지 커밋 검색

>git log --merges

머지 commit만 골라서 찾아준다. 반대로 ‘–no-merges’ 옵션을 사용하면 순수 커밋을 찾을 수도 있다.

명령창에서 그래프 보기

>git log --pretty=oneline --graph

그래프는 GUI 툴에서 봐야 편하다. 평소에는 거들떠 보지 않던 gitk도 명령창 그래프보다는 낫다. 하지만, 간혹 써야할 때가 있으니..

추적하는 파일 목록  보기

>git ls-files

다른 분들에게 설명할 때 많이 쓰게된다.

저장된 git object 정보 보기

>git cat-file (-t|-p) <object>

‘-t’, ‘-p’ 파라미터를 오가며, 오브젝트들을 들여다보면 재미있다.

참고

아웃룩 메일함 새로 만들기

개인적으로 아래처럼 1년에 한번 씩 메일함을 새로 만들고 있다. 메일함 파일의 크기를 작게 할 수록 인덱싱, 검색, 관리 면에서 유리하기 때문이다.

이 때, 메일함 파일인 *.pst 파일을 직접 복붙 후 이름을 변경하는 식으로 시도하면 아웃룩이 열리지 않거나 메일함 연결이 실패, 새 메일로 인식한 인덱싱 시도 등의 이상한 증상이 발생한다. 그러므로, 아웃룩의 메뉴를 이용해 처리하는 것이 현명하다.

여기서는, 아웃룩 2010을 기준으로 설명한다.

  1. “파일 > 정보 > 계정설정”을 눌러 계정 설정 창을 연다.
  2. 계정설정 창에서 “전자 메일 탭 > 계정 이름 선택 >  폴더 변경 버튼”을 눌러 새 전자 메일 배달 위치 창을 연다.
  3. 새 전자 메일 배달 위치 창에서 “새 Outlook 데이터 파일” 버튼을 눌러 지금부터 오는 메일을 받을 *.pst 파일을 만든다.

그 밖에

추가적으로 아래와 같이 하면 좋다.

  1. 새 메일 함을 다가올 해 이름으로 한다.
  2. “파일 > 정보 > 계정설정”을 눌러 계정 설정 창을 연다.
  3. 계정설정 창에서 “데이터 파일 탭 > 추가 버튼”을 눌러 구 메일함 파일을 추가한다.
  4. 계정 설정 창에서 “데이터 파일 탭 > 설정 .. 버튼”을 눌러 메일함의 이름을 변경하거나 압축한다.

데이터 파일 변경 후, 이메일 검색이 제대로 되지 않는다면 공식 가이드에 따라 아웃룩 인덱싱을 다시 해보자.

참조

회사에서 깃(Git)을 쓰고 싶어요

 

인터넷에는 깃(Git)의 장점에 대한 많은 글이 있다. 먼저 많이 회자되는 장점들을 무작위로 열거 해보자.

  • 미친듯이 속도가 빠르다.
  • 오프라인 작업이 가능하다.
  • 저장공간을 적게 차지한다.
  • 실수를 쉽게 복구할 수 있다.
  • 항상 대안이 있어 염려할 필요가 없다.
  • 커밋이 쉽다.
  • 커밋의 관리가 쉽다.
  • 특정 파일을 무시할 수 있다.
  • 브랜치를 만들 수 있다.
  • 내 상태를 확인할 수 있다.
  • 브랜치에서 체리픽(cherry pick)할 수 있다.
  • 커밋을 검색 할 수 있다.
  • 업무 흐름에 따라 관리할 수 있다.
  • 실험을 쉽게할 수 있다.
  • 과제 크기에 따라 다양한 커밋 전략을 세울 수 있다.
  • 협업이 쉽다.

깃 너무 좋다. 인터넷을 둘러봐도 칭찬 일색이다. 간혹 깃의 장점을 문의하는 질문이 보이면 , 깃 추종자들 수많은 장점과 함께 입에 침이 마르도록 칭찬하며 곧 질문한 이가 교화 되는 것으로 마무리 된다. 깃이 그렇게 좋다니 회사에서 안쓸 이유가 있을까? 쓰는게 좋겠다. 기획, 마케팅, 과제 관리자, 디자이너에게 달려가 당장 깃을 쓰자고 말하자.

그들을 설득할 수 있을지 망설여진다. 아마 못할 것 같다. 위에 열거된 장점을 모두 들이대도 어려울 것 같다. 그들은, 기존의 중앙관리식 형상관리도구(VCS)가 단순하거나, 한 곳에 저장하는게 보안이 쉽거나, 충분히 강력하다 말한다. 또, 굳이 새로운 도구를 옮기는데 학습 비용을 치룰 필요가 있냐거나, 깃이 너무 어렵다고 하기도 한다.

그들의 이유 또한 나를 설득하기엔 충분치 않지만, 마음은 이해가 된다. 내 생각에 그들에게는 장점이 없다(혹은 거의 없다). 위에 열거했던 많은 장점들은 하나로 귀결되는데, 개발자가 주도적으로 프로젝트를 운영할 수 있다는 것이다. 개발자가 원하는 원하는 곳에, 원하는 시간에, 원하는 것만 commit할 수 있다. 개발자에게만 유효하고 매력적인 부분이다. 그들의 용어로 현재라고 부르는 상태(최신, latest)에만 관심있는 그들에게는, 그저 이상하고 무서운데다 복잡한 무엇이고..

깃을 싫어하는 비 개발자는 이해하자.

그 밖에

개발자의 선택이라면 상관 없다.

하지만, 비개발자들의 반대에 부딪혀 깃 사용이 좌절된 회사라면 개발자 중심의 소프트웨어 회사는 아닐 것이다. 어쩌면,  소프트웨어 회사도 아닐지도 모르고..

참조

윈도우에서 checksum 확인하기

전송받은 파일의 무결성을 확인하는 간단한 방법으로 checksum을 많이 쓴다. 브라우저나 프로그램을 받을 때, 제작사의 홈페이지에서 파일과 함께 체크섬 데이터를 제공한다. JDK 다운로드 시에도 checksum 데이터가 제공된다.

파일을 받은 후에 checksum을 뽑아 이 값을 제작사가 제공하는 값과 비교하면 되는데, 마이크로소프트는 윈도우에서 checkum을 쉽게 추출하기 위한 fciv(File Checksum Integrity Verifier)라는 이름의 프로그램을 제공하고 있다.  md5와 sha1 모두 뽑을 수 있고, 기본 값은 md5다.

JDK8_151을 받아서 마이크로소프트에서 제공하는 도구를 통해 checksum을 뽑아보자.

> fciv jdk-8u151-windows-x64.exe
//
// File Checksum Integrity Verifier version 2.05.
//
5ae8af1fb0c31dae4aeea2744dfe83b4 jdk-8u151-windows-x64.exe

참조