와 같은 제품 버전 v1.0.0.100
은 소프트웨어의 고유 한 프로덕션 릴리스를 나타낼뿐만 아니라 해당 제품의 기능 세트와 핫픽스 단계를 식별하는 데 도움이됩니다. 현재 제품의 최종 패키지 / 빌드 / 이진 버전을 유지 관리하는 두 가지 방법이 있습니다.
버전 관리. 파일은 어딘가에 버전 번호를 저장합니다. CI (Continuous Integration) 빌드 서버에는이 체크인 버전 번호를 사용하여 필요한 소프트웨어의 모든 영역 (2 진, 설치 프로그램 패키지, 도움말 페이지, 문서 등)에 적용하는 소프트웨어를 빌드하는 스크립트가 있습니다.
환경 및 / 또는 빌드 매개 변수. 버전 관리 외부에서 유지 관리됩니다 (즉, 스냅 샷 / 태그 / 지점에 연결되지 않음). 빌드 스크립트는 같은 방식으로 숫자를 분배하고 사용하지만 값을 다르게 가져 옵니다 ( 소스 스크립트를 통해 소스 트리에 상대적인 위치를 알 수있는 대신 빌드 스크립트에 제공됨 ).
첫 번째 접근 방식의 문제점은 메인 라인 분기에서 병합을 복잡하게 만들 수 있다는 것입니다. 동일한 소프트웨어의 병렬 릴리스 2 개를 계속 유지하는 경우 마지막 병합 이후 버전이 모두 변경된 경우 두 메인 라인간에 병합 할 때 충돌이 해결됩니다.
두 번째 접근 방식의 문제점은 화해입니다. 1 년 전 릴리스로 돌아 가면 릴리스 정보를 식별하기 위해 태그 정보에만 의존합니다.
두 경우 모두 CI 빌드 이전에 알려지지 않은 버전 번호의 특정 측면이있을 수 있습니다. 예를 들어, CI 빌드는 실제로 자동화 된 빌드 번호 인 4 번째 컴포넌트 (예 : 지점에서 140 번째 빌드)를 프로그래밍 방식으로 배치 할 수 있습니다. VCS의 개정 번호 일 수도 있습니다.
소프트웨어의 버전 번호를 유지하는 가장 좋은 방법은 무엇입니까? "알려진"부분은 항상 VCS에 유지되어야합니까? 그렇다면 주요 지점 간 충돌이 문제입니까?
현재 CI 빌드 계획 (Atlassian Bamboo)에서 지정되고 유지 관리되는 매개 변수를 통해 버전 번호를 유지합니다. CI 빌드가 시작 되기 전에 master
버전 번호가 올바르게 설정되어 있는지 지점으로 병합하기 전에주의해야 합니다 . Gitflow 워크 플로와 관련하여 소스 번호에서 버전 번호를 추적 한 release
경우 릴리스 준비시 지점을 만들 때 버전 번호가 올바르게 설정 되었음을 보장 할 수 있습니다 . QA는이 지점에서 최종 통합 / 연기 / 회귀 테스트를 수행하고 사인 오프시 master
릴리스 약속을 알리는 병합이 수행됩니다.
version.txt
한 버전은 한 줄 포함1.0.7
하고 다른1.2.0
해결에 정말 하드는? 이것이 분리 된 두 가지를 병합하는 유일한 충돌 인 경우, 나는 매우 운이 좋을 것이라고 생각합니다. 얼마나 자주 발생합니까? 이 문제가 발생 하면 병합 된 버전의 버전 번호 를 생각 해야합니까? (“version”이라는 단어를 모호하게 사용해서 죄송합니다.)