2011-08-03 2 views
2

소스 제어를 VSS에서 Git으로 옮깁니다. Git에서 우리 코드의 어떤 버전이 우리 환경의 어느 상자에 배치되는지를 추적하기 위해 최선의 전략을 결정하려고합니다. 지금까지는 GitHub 마스터 브랜치만을 제작 전용으로 전용으로 사용했습니다. 프로덕션에 성공적으로 적용된 내용을 구성 관리 팀에서 기록하지 않는 한이 지사에서 커밋되지 않습니다.힘내 분기 및 환경 배포 추적

사람들은 모든 환경에 대해 별도의 분기를 만들거나 태그를 사용합니까? 나는 분기 모델을 제안했지만 그것이 불필요하고 잠재적 인 고통스럽고 병합이 많이 필요할 것이라고 생각합니다.

태그는 훌륭한 솔루션이 될 것이라고 생각하지만 사람들이이를 어떻게 구현합니까? QA1, QA2, QA3이라는 3 가지 품질 보증 환경이 있다고 가정 해 보겠습니다. 방금 origin/hotfix42 지점의 코드를 QA2 상자에 배치 한 경우 "QA2-060911_511pm"과 같은 태그 지정법을 사용하면 어떤 시점에 어떤 버전의 코드가 어느 상자에 배포되었는지 알 수 있습니까? 그러나 이렇게하면 태그 데이터베이스가 시간이 지남에 따라 수백 및 수천 개로 늘어납니다. 따라서 현재 버전을 QA2에 배포하려는 경우 모든 태그를 통해 최신 정보를 찾는 방법은 무엇입니까? 또는 .... QA2_Current라는 추가 태그를 항상 추가하겠습니까? 그런 다음 계속 태그를 제거하고 배포가 진행됨에 따라 다른 버전을 추가해야합니다.

커밋에 메타 데이터를 추가하는 다른 메커니즘이 있습니까? 예를 들어, 커밋에 env 변수를 추가 한 다음 env = QA2 인 커밋을 검색 할 수 있습니까?

감사

+1

"자식 노트"는 커밋 주석 : 현지 지점을 나열 할 경우 하지만, 최고의 스타로 인해 당신이 뭔가를해야 할 것이다 커밋 자체와 자식 로그 기본적으로 표시됩니다. – holygeek

답변

1

은 "최근처럼 (변경을 할 것들에 대한 다음은 (커밋 버전 1.0.0처럼 항상 같은 가리키는)을 변경하지 않습니다 것들에 대한 태그를 사용한다 엄지 손가락의 규칙 및 사용 지점 "버전).

QA2에 배포 된 현재 버전을 git branch QA2으로 지정하고 해당 명령에 -f을 추가하여 적절하게 이동하는 것이 좋습니다. 복잡한 태그 병합을 "이동 가능한 태그"로 사용하려는 경우에는 필요가 없습니다.

브랜치를 이동하는 대신 병합을 수행하려는 경우 과거에 배치 된 내역 시퀀스를 유지해야하는 경우입니다. 잠시 동안 [email protected]{1}, [email protected]{2} 등을 사용할 수 있지만 결국에는 git gc에 의해 지워집니다.

또한 git에서 병합하는 것이 익숙한 것보다 덜 고통 스럽다는 것을 명심하십시오. 이러한 모델을 너무 어렵다고 생각하기 전에 시도해 볼 수 있습니다.

0

는 유닉스에 있다면 당신은 커밋 날짜별로 정렬 태그를 나열하려면이 옵션을 실행할 수 있습니다, 최신 태그를 찾는 방법에 대한 귀하의 질문에 대답하려면, 당신은 또한으로 파이프 라인을 시작할 수 있습니다

git tag | xargs [email protected] git log --format=format:"%ci %h @%n" -1 @ | sort 

주 refs/sha 해시의 다른 목록. 를 수정하지 않고

가 사용할 수있는 메타 데이터를 커밋에 대한 질문에 대해서는
git branch | sed 's/^\*//' | xargs [email protected] git log --format=format:"%ci %h @%n" -1 @ | sort