2013-04-02 4 views
3

저는 프로젝트를 유지하기 위해 git/github을 사용하여 PHP 프로젝트를 진행하고 있습니다. 나는 간단한 분기 모델 (master, dev, hotfix-, feature-, release)을 따르고있다. 내 응용 프로그램에는 버전 번호를 정의하는 구성 파일 (config.php)이 들어 있습니다. 최근에는 핫픽스를 만들어야했습니다. 마스터에서 핫픽스 분기를 분기하고, 변경 한 다음 버전을 버렸습니다 (예 : 1.1.2에서 1.1.3). 내가 다시 마스터로 핫픽스를 병합했을 때, 나는 아무런 문제가 없었다. 내가 dev에 핫픽스 분기를 병합했을 때, 나는 버전 번호 라인에 내 설정 파일과의 병합 충돌이 있었다. 내 dev 브랜치에서, 나는 다른 버전 번호를 가지고 있었고, 그래서 그것이 충돌의 원인이라고 생각하고있다. 어떻게하면 이것을 피할 수 있습니까? 다른 시간 및/또는 지점에서 버전을 충돌해야합니까?버전을 부딪 힐 때 병합 충돌이 발생하는 이유는 무엇입니까?

답변

2

아니요 병합 할 때이를 피할 수는 없습니다. 동일한 파일에서 같은 행의 두 변경 사항이 충돌로 끝납니다.

체리 피크를 사용하여 버전 충돌을 피하는 것이 고려해 봤습니까? 또 다른 옵션은 버전을 하드 코딩하지 않고 git에서 자동으로 파생시키지 않을 것입니다 (예 : 릴리스 분기는 커밋 수에 따라 숫자를 얻고 핫픽스 분기는 분기 이름을 기반으로하는 접미어입니다)

+0

그래서'git describe --all> version.txt'과 같이 간단하게 버전을 하드 코딩하는 대신 파일 내용을 읽는 것이 더 쉬울 것이라고 생각하십니까? 나는 내 방식대로 계속하면이 문제가 계속 될 것 같아요. – Jeff

+0

예, 많은 사람들이 그렇게합니다. – ThiefMaster

3

"ours "또는"theirs "전략을 통해 혼란을 해결하는 방법을 알았지 만, 특정 전략에 맞게 전략을 사용할 수는 없다고 생각합니다. 개발자가 버전 번호를 업데이트하지 않고 git-hook을 사용하여 업데이트하는 것을 피하기를 원할 것입니다.

구글 검색

는이 켜져 : http://cd34.com/blog/programming/using-git-to-generate-an-automatic-version-number/

편집 : 는 다른 방법으로, 당신은 단순히 버전 번호를 토큰 화 할 수 있고 단지 자식이 완전히 무시했다. 배포 프로세스에서 몇 가지 파생 버전 번호로 토큰을 대체 했습니까? 증분 또는 git SHA1 또는 다른 번호를 기반으로합니다.

재미있는 주제는 내 팀원이 실제로해야 할 일입니다.

관련 문제