2012-05-12 3 views
4

버전 번호, 작성자 및 편집 날짜와 같은 정보가 포함 된 소스 정보 파일 위에 버전 정보를 삽입하고 싶습니다.Mercurial을 사용하여 소스 코드에 버전 정보를 포함하는 방법

Mercurial에서이를 수행하는 간단한 방법이 있습니까?

+1

작성자는 파일 작성시 주로 수정됩니다. 당신이 파일을 편집 할 마지막 사람이되기를 원하지 않는 한. 그래도 그 말은 어색해. 일반적으로 DVCS (및 ClearCase와 같은 일부 중앙 집중식 VCS)는 버전 메타 데이터를 파일에 저장하지 않습니다. 예를 들어, 파일에 임베드 된 파일에 영향을 L 치는 마지막 커 L 트 x 호나 _ 생한 날짜를 쉽게 얻을 수 없습니다. 나는 그 능력을 소중하게 생각하기 때문에 고풍스러운 VCS (더 정확하게는 RCS)를 사용하고 릴리스 시스템은 그 주위에 설정됩니다. Git이나 Mercurial 또는 SVN으로 전환하지 않았습니다. –

+2

또한 내 [토론] (http://stackoverflow.com/questions/645008/what-are-the-basic-clearcase-concepts-every-developer-should-know/645424#645424)을 참조하십시오 (또는 비난) 'Embedded version numbers - Good or Evil'에 대한 정보. –

+0

가능한 복제본 : [파일 내역 : 소스에서 또는 scm이 처리하도록 하시겠습니까?] (http://stackoverflow.com/questions/929824/file-history-in-the-source-or-let-scm-handle-it) – ChrisF

답변

3

주석 및 기타 답변에서 언급했듯이 자동으로 확장 된 CVS와 유사한 태그를 사용하는 것은 좋지 않습니다. 특히 이후 언제든지 거의 모든 세부 정보에서 필요한 메타 정보를 추출 할 수 있기 때문에 특히 그렇습니다.

그러나 실제로 필요하다면 (예를 들어 상사가 그렇게 말했기 때문에) 가장 가까운 것은 수은과 번들로 제공되는 keyword extension을 사용하는 것입니다.

+1

키워드 확장에 대한 "필요없는 이유"페이지는 다음과 같습니다. http://mercurial.selenic.com/wiki/KeywordPlan#head-2007fad6f31bf6f1f1b5c3d5b02e5c6225de3ec5 저는 Mercurial의 주 저자에 의한 논평에서 비롯된 것이라고 확신합니다. 누가 확장을 적극적으로 권고하는지. –

4

여기 Stackoverflow에서 많은 질문을 받았으며 짧은 대답은 다음과 같습니다.

악의적 인 병합을 수행 할 때마다 커밋마다 변경되는 파일은 원하지 않습니다.

더 나은 옵션은 다음과 같습니다

  • 가에있는 파일에 대한 버전 문자열을 쓰기 update
  • 당신이 스크립트 실행 $ (HG 아이디)를 배포/구축하고 그 시간에 빌드에 그것을 넣어 가지고

나를 믿어 라. 파일의 수정 문자열은 CVS/SVN 사고 다. 그것은 git/Mercurial 세상에서 아무 곳도 없다.

+0

나는 동의하지 않는다. 그리고 SVN에서도 속성을 통해 명시 적으로 활성화해야합니다. 어떤 파일이'cvs add -kb' 또는 repo 설정에서 "binary"인지 명시 적으로 가르쳐야 만하는 CVS와는 상당히 다릅니다. – 0xC0000022L

+1

CVS와 svn 모두 작업 디렉토리에있는 여러 파일을 다른 버전에서 체크 아웃 할 수 있습니다. 나는'cvs co -r 1.1 a_specific_file'을 할 수 있으므로 cvs (및 svn)에서는 "어떤 버전이이 빌어 먹을 것"을 갖게됩니다. Mercurial과 git에서는 어떤 버전의 파일과 다른 버전의 파일을 가질 수 없으므로''hg id''는 항상 _every_ 파일의 내용을 알기에 충분합니다.소스 파일을 오염시키는 대신 빌드/배포 시스템을 한 단계 더 똑똑하게 만드십시오. –

+0

업데이트시 파일에 버전을 어떻게 추가 하시겠습니까? 그것을 자동화하는 방법이 있습니까? 나는 SourceTree를 사용하고있다. – felwithe

1

예 가능하지만 활성화해야합니다. 당신이 요구하는 것은 기본적으로 keyword extension입니다. 실제 확장 된 키워드가 업데이트 내역의 일부가되기를 원치 않으므로 처음으로이 기능을 활성화 할 때 (kwshrink에 대한 섹션 참조, kwexpand)주의하십시오.

1

가장 좋아하는 방법은 hgversioninfo plugin입니다. "hg commit", "hg update"등에서 즉시 version.py 파일을 생성합니다.

관련 문제