2013-02-03 5 views
4

가능한 중복 :
Enable ident string for Git repos자식의 버전 문자열을 자동으로 생성하는 방법

내 프로젝트에서

, 모든 소스 파일 (에 관계없이 언어 - 자바, 파이썬, 쉘) 분기, 마지막 커밋 날짜, 커미터 이름 등을 포함하는 주석 줄이 있습니다.

이것은 $로 자동 대체되는 특수한 자리 표시자를 사용하여 수행됩니다 전자 소스 제어 응용 프로그램.

git에서 비슷한 기능을 구현할 수 있습니까?

Windows에서 Git Extensions를 사용하고 있으며 Linux에서 아직 결정되지 않은 GUI를 사용하고 있습니다.하지만 두 가지 모두 git 명령 줄 도구를 호출하는 GUI라고 가정합니다.

+2

질문을 참조 http://stackoverflow.com/questions/ 1792838/enable-ident-string-for-git-repos 및 http://stackoverflow.com/questions/384108/moving-from-cvs-to-git-id-equivalent –

답변

3

키워드 대체를 반복하려면 Git에서 smudge/clean filters을 읽어야합니다.

Grok 섹션 "키워드 확장"은 $ DATE $ 키워드를 확장 한 예를 설명했으며 은 반드시 역 동작이어야합니다. 버전 문자열에 $의 SOMEKEYWORD을 $으로 확대 당신에 경우 대부분의 작업은 후드 아래에 git describe에 의해 수행 될 수있다, 깨끗한 부분을 손으로 구현해야합니다 (당신의 손)

5

힘내네이트는 이러한 자리 표시 자에 대한 지원이 없으며 절대로 가질 수 없습니다.

대신 자동으로 응용 프로그램을 컴파일하는 동안 git describe 명령의 출력을 포함하는 소스 파일을 생성하고 포함시킵니다. 또는 대신 일부 구성 파일 (JSON 또는 원하는대로)을 생성 할 수 있습니다.

(
    echo '/* Generated file, do not edit. */' 
    echo '#define APP_VERSION "'`git describe`'"' 
    echo '#define APP_VERSION_DATE "'`git log -n 1 --format=%ai`'"' 
) > version.h 

, 스크립트 언어에 대해이 작업을 수행하려면이 포스트 커밋 및 기타 사용할 수 있습니다

은 (당신이 당신의 메이크에 직접 이러한 명령을 추가 할 수 있습니다) 다음과 같이 쉘 스크립트를 사용하여, 버전 정보와 C++ 헤더를 생성하려면 후크.

+0

-1 - 사실이 아니며 git가 지원합니다. 자리 표시 자, 다른 대답을 참조하십시오. – Chronial

+1

"자리 표시 자에 대한 지원"은 약간의 스트레칭입니다. +1 IMHO 명백하게 무성한 downvote 카운터. – tripleee