2013-09-06 1 views
0

이미 많은 질문과 답변이 있지만이 특정 사항을 다루는 사람이 없거나 프로세스를 이해하지 못하고 있습니다.커밋 스쿼시없이 앱 버전 번호에 git 태그 사용?

  1. 최종 코드는 & 테스트
  2. 이 수를
  3. 태그이 버전의 Info.plist를 업데이트 버전 번호
  4. 스크립트 실행에 커밋 힘내 및 구축 커밋 해결로 끝나는 전형적인 개발 프로세스, ????

포스트 보관 빌드 단계에서 4 단계를 실행하므로 plist가 업데이트되고 배포 아카이브가 만들어집니다. 예외적으로 작동합니다 ...

내가 커밋하고 태그를 추가 한 스냅 샷은 올바른 버전 정보가 포함 된 Info.plist가 업데이트 된 스냅 샷이 아닙니다. 그것은 catch-22입니다. plist를 업데이트 할 때까지 커밋 할 수는 없지만 커밋 된 태그가있을 때까지는 plist를 업데이트 할 수 없습니다.

그래, 내가 변경된 plist를 커밋으로 다시 커밋 한 다음 다시 태그 할 수 있지만, 확실히 자동화되지는 않으며 오류가 발생하기 쉽습니다.

아마 전 또는 후 - 커밋 훅 에서이 일을해야합니까? 또는 내 과정이 잘못 되었습니까?

편집 :이 질문은 특히 Xcode와 함께 Git과 그 특정 환경에서의 우수 사례를 사용하는 것에 관한 것입니다. 질문에 Xcode 태그를다는 것만으로는 충분하지 않았습니다.

+0

Info.plist를 업데이트 한 후 태그를 만들면 어떨까요? 나는 그 문제를 잘 모르겠다. –

+0

현재 버전 번호 (및 태그)는 커밋에 따라 다릅니다. 즉, 스크립트는 이미 커밋중인 태그에서 info.plist로 들어가는 버전 번호를 생성합니다. – Flyingdiver

+0

http://stackoverflow.com/a/11899540/177415와 같은 모양이지만 같은 질문을하지만 실제로 답변을 이해하지 못했습니다. – Flyingdiver

답변

0

버전 번호를 Info.plist에 리터럴로 저장하지 마십시오. 저장소에있는 Info.plist를 템플릿으로 사용하고 빌드 프로세스에서 빌드 된 애플리케이션에 실제 Info.plist를 생성하게하십시오. 이것은 실제로 기본값이며 PRODUCT_NAME, EXECUTABLE_NAME 등과 같은 빌드 설정이 빌드 중에 파일로 대체됩니다.

따라서 빌드 할 때마다 저장소의 상태에서 버전 번호를 계산해야합니다. 이는 템플릿 파일의 수정 시간이 변경되지 않은 경우에도 Xcode가 템플릿에서 빌드 된 Info.plist를 강제로 생성해야한다는 점에서 복잡합니다.

저장소의 Info.plist의 이름을 Info.plist.in 또는 다른 이름으로 바꾸고 실행 스크립트 빌드 단계를 사용하여 Info.plist.in에서 Info.plist를 생성 할 것을 권장합니다. this answer에서 제안한 것처럼 별도의 타겟을 사용하여이를 수행 할 수 있습니다. 이 타겟은 Xcode가 먼저 빌드하도록 앱을 빌드하는 타겟의 의존성으로 추가 될 것입니다. Info.plist를 생성 할 대상은 실행 스크립트 빌드 단계 만 포함하는 쉘 스크립트 대상이됩니다. 실행 스크립트 빌드 단계의 입력을 설정하지 않으면 Xcode가 무조건 실행합니다.