2008-09-30 5 views

답변

21

필자는 유사한 가용성을 원했고 $ Rev $가 파일의 개정본이 변경된 경우 파일에 대해서만 업데이트 되었기 때문에 $ Rev $이 부족하다는 것을 알았습니다. (이는 편집해야 할 시간과 커밋해야 할 시간이었습니다. 대신에 저장소의 개정 번호를 기반으로하는 것을 원했습니다.

내가 지금 일하고있는 프로젝트의 경우 작업 복사본의 최상위 디렉토리에서 svnversion -n을 실행하고 가장 최근의 개정 정보를 .h 파일로 출력하는 Perl 스크립트를 작성했습니다. 내 작업 카피의 비 버전 화 파일에 저장된 Reversion을 사용하여 모든 컴파일시에 현재 개정 정보를 겹쳐 쓰지 않도록합니다.하지만 그렇게했는지 여부는 당신에게 달려 있습니다.)이 .h 파일 (또는 여러 파일 필요한, 당신의 접근 방식에 따라) 응용 프로그램 코드와 리소스 파일 모두에서 참조하여 원하는 정보를 얻습니다.

이 스크립트는 빌드 전 단계로 실행되므로 빌드가 시작되고 빌드 도구로 해당 파일이 자동으로 다시 빌드되기 전에 모든 것이 최신 상태로 유지됩니다.

+9

TortoiseSVN에는 작업 복사본의 가장 높은 커밋 된 개정 번호를 찾는 SubWCRev.exe라는 작은 도우미 유틸리티가 있습니다. – dummy

+0

잘 알고 있습니다. 우리 팀은 TortoiseSVN을 많이 사용합니다. 그래서 스크립트를 작성했을 때 도우미에 대해 잘 알았을 것입니다. 어떤 점에서 SubWCRev.exe를 조사해 볼 수 있습니다. 일반적인 Subversion 배포본에 대한 의존성을 떨어 뜨리는 것이 좋을 수도 있습니다 ... – antik

+1

이 아이디어를 구현 한 다른 사람을위한 팁 : 변경 사항이 실제로있을 경우에만 스크립트에 새 버전 작성 국부적으로 만들어졌다; 즉, 'svnversion'에 의해 출력 된 값이 최종 문자 세트 중 "M"을 포함하는 경우에만. 이렇게하면 버전 번호를 변경하지 않고 커밋 한 후에 프로젝트를 다시 빌드 할 수 있습니다. 출력 형식에 대한 설명은 [svnversion' documentation] (http://svnbook.red-bean.com/en/1.7/svn.ref.svnversion.re.html)을 참조하십시오. –

3

SVN to embed it for you이 문제를 해결할 수 있습니다. 해당 페이지의 $ Rev $ 키워드를 참조하십시오.

+5

불행히도 $ Rev $ 키워드는 * 나타나는 파일이 * 변경된 마지막 수정본 만 제공합니다. –

3

svn 키워드 대체 here을 살펴보십시오. 또 다른 질문이 here 나는 구글을 통해 발견!

3

antik의 솔루션은 우리가 사용하는 솔루션입니다. 환경 변수를 사용하는 데주의하십시오. .h 파일은 svn rev 번호가 변경 될 때 필요한 파일을 다시 컴파일하도록 종속성을 가질 수 있음을 보장합니다.

+0

좋은 지적 : 우리 환경에서 또 다른 이점 이었음을 잊어 버렸습니다. – antik

15

TortoiseSVN과 함께 제공되는 명령 줄 도구 SubWCRev을 사용하는 것은 어떻습니까? $ WCREV $ $ WCDATE $ 등의 토큰이있는 템플릿 파일을 만듭니다. 그런 다음 템플릿 파일에 SubWCRev를 실행하여 컴파일러에 공급되는 실제 소스 파일을 만드는 사전 빌드 단계를 거칩니다.

관련 문제