2012-07-10 2 views
0

우리는 git을 사용하여 코드를 관리하고, CI 시스템을 사용하여 빌드 아티팩트를 빌드하고, 복사하고, git로 다시 푸시합니다. 우리는 마스터 브랜치 (master branch)로 들어가며, CI 시스템은 변경 사항을 추출하고, 빌드하고, 프로덕션이라는 지점으로 푸시합니다. 그런 다음 해당 분기를 테스트하고 다른 CI 작업을 실행하여 프로덕션 브랜치를 실제 서버로 가져옵니다.로컬 변경 사항이 없을 때 git 작업 복사본이 충돌 할 수 있습니까?

라이브 서버에서 버전을 편집 한 사람은 아무도 없으며 저장소의 로컬 복사본은 변경되지 않으며 -b production 수정 자로 복제됩니다.

그러나 라이브 서버를 당길 때 충돌이 발생할 수 있습니다. git에 대한 내 이해에 문제가있을 것이라고 확신하지만, 서버에서 아무 것도 변경되지 않으면 해당 분기에서만 가져 오는 경우 충돌이 어떻게 나타날 수 있습니까?

우리의 과정은 본질적입니다 : 로컬

:

git push origin master 

CI :

git checkout <newest-changeset> 

CI :

test 
git checkout -b local # to put the detatched-head CHECKOUT from above into a usable branch 
git push origin local:production 

서버 :

,
git pull origin production 
--CONFLICT-- 
+0

문제를 진단하는 데 충돌이 무엇인지 알려주시겠습니까? 또한 'git status'가 서버에서 정상적으로 작동합니까? –

+0

CI 작업의 일부로 require.js를 사용하여 컴파일 된 file - application.js 파일이 있습니다. 이 파일은 CI 작업에 의해서만 변경되며 서버로 끌어 오기 전에 프로덕션 지점으로 푸시됩니다. – Martin

답변

0

귀하의 프로세스가 변경 세트 주변에 구조가 부족한 것 같습니다. 변경 세트를 표시하는 방법으로 임의의 커밋을 사용하지 않을 것입니다. CI http://dymitruk.com/blog/2012/02/05/branch-per-feature/에 대한 작업을 구성하려면 기능별 지점 별 게시물을보십시오.

이렇게하면 원하는 시점에 프로덕션으로 승격 할 수있는 릴리스 후보 빌드와 개발할 때 CI가 정상적으로 실행되도록하기 위해 자주 원하는 통합 빌드를 쉽게 바꿀 수 있습니다.

관련 문제