기본 콘텐츠로 건너뛰기

라벨이 git인 게시물 표시

CMake에서 GIT Tag 가져오기

먼 옛 날, CVS, Subversion 등에서 소스의 특정 태그를 커밋로그나 뭐 그런 걸로 수정해주는 경우가 있었는데, GIT에서는 그런 거 얄짤 없고, CMake에서도 정식 모듈로 주어지는 것이 없으니, 사부작사부작 만들어 보았다. find_package(Git) # GIT 태그를 읽어와 GIT_TAG_VERSION_RAW 이라는 변수로 넣는다. execute_process( COMMAND "${GIT_EXECUTABLE}" describe HEAD --tags WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" OUTPUT_VARIABLE GIT_TAG_VERSION_RAW ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) # GIT 브랜치를 읽어와 GIT_BRANCH 라는 변수로 넣는다. execute_process( COMMAND "${GIT_EXECUTABLE}" rev-parse --abbrev-ref HEAD WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" OUTPUT_VARIABLE GIT_BRANCH ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) # vX.X.X 형식을 x.x.x 형태로 변환한다. string(REGEX REPLACE "^v([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\1.\\2.\\3" GIT_TAG_VERSION "${GIT_TAG_VERSION_RAW}") # 프로젝트 버전 세팅 project(myProject VERSION ${GIT_TAG_VERSION}) # CPack용 버전 세팅 set(CPACK_PACKAGE_NAME ${PROJECT_NAME}) set(CPACK_PACKAGE_VERS...

Git commit count

git을 쓰다보니, cvs, svn과 달리 revision이 숫자가 아니라서, 패키지 버전에 넣을 빌드넘버를 넣을 때 조금 불편하다. 아주 없는 것은 아니니 참고용으로... ㅎㅎ $ git rev-list HEAD --count 오호 커밋마다 해시태그가 붙는데,  그걸 가져오는 방법은 rev-parse 하면 볼 수 있다. $ git rev-parse HEAD --verify -q --short=4 뒤에 --short=4는 앞에 4바이트 크기로 잘라달라는 의미이다. 시간값을 유닉스 타임 값으로 해서 해시태그랑 같이 가져올 때는 git log를 써도 될 것 같다. $ git log HEAD -n 1 --pretty=format:'%H %ct' 도움말을 보면 PRETTY FORMAT 항목에 형식이 자세히 나온다. 대충 %H는 커밋 해시태그이고, %ct는 커밋 시간을 유닉스 타임 값으로 보여준다.