2016-06-10 2 views
0

빌드/배포 프로세스에 관계없이 최신 배포가 시작된 지점을 git으로 표시하는 방법이 있습니까?Git에서 마지막 분기가 배포 됨

배포와 git는 관련이 없으므로 단일 명령을 사용한 것이 아닙니다.

내가 무슨 뜻인지 설명하기 위해 이전에 작업하지 않은 프로젝트에 뛰어 들면서 어떤 분기가 배포되었는지 잘 모르는 경우를 상상해보십시오. 일련의 git 명령을 사용하는 것만으로도 알아낼 수 있습니까?

+0

적어도 배포 상황을 알려줄 수 있습니다. – PeeHaa

+0

@PeeHaa 일반적인 명령을 따랐습니다. _ 사용중인 빌드/배포 프로세스와 상관없이 _ –

+4

빌드 및 배포 프로세스는 git와 완전히 관련이 없으므로 아무 것도이 사실을 알려주지 않습니다.그러나 좋은 빌드 프로세스가 아마도 빌드에 태그를 붙일 것이기 때문에'git describe'는 [주어진 브랜치에서 최신 태그를 알려줄 수 있습니다.] (http://stackoverflow.com/questions/1404796/how-to-get-the-latest -tag-name-in-current-branch-in-git)를 사용합니다. 아마 이것은 좋은 출발일까요? – cmbuckley

답변

1

빌드 프로세스에 대해 아무 것도 생각하지 않으려는 경우 불가능합니다. 빌드 프로세스가 버전 제어 시스템에 다시 기록 할 것이라고 가정 할 수 없기 때문입니다 (예 : 어딘가에 상자에 git pull을 게시하는 프로세스를 배포해야합니다.

당신이 당신의 빌드 프로세스가 주어진 지점 (예를 들어, master)에서 구축하고 분기에게이 빌드를 만드는마다 태그를하는 가정을하면, git describe master 당신에게 master 지점의 최신 태그를 말할 것이다.

이 경우 최신 배포가 아닌 빌드에 대해서만 알릴 수 있습니다. 이 의미에서 태그는 릴리스 후보이며 최신 배포를 찾으려면 더 많은 가정을해야합니다.

M─┐ [v2] [release] Merge branch 'feature-Y' into release 
│ o [feature-Y] Commit F 
│ o Commit E 
│ o Commit D 
M─┤ [v1] [master] Merge branch 'feature-X' into release 
│ o [feature-X] Commit C 
│ o Commit B 
│ o Commit A 
I─┘ Initial commit 

이 몇 가지 알려줍니다 :

  • 우리는이 응용 프로그램의 한 버전을 유지

    우리는 다음과 같은 전략을 사용합니다.

  • master 현재 생산 버전의 점입니다. (그래서 v1은 현재 라이브입니다.)
  • 커밋은 지형 지사에서 이루어지며 준비가되면 release으로 병합됩니다.
  • 여기에 새로운 feature-Y이 우리의 빌드 릴리스 프로세스에 의해 빌드되었고 v2으로 태그 지정되었습니다.
  • 테스트를 위해 사전 프로덕션 환경에 배포됩니다.
  • 테스트가 완료되면 빌드가 실행되도록 승격됩니다.
  • 모든 사람이 실시간으로 작동하는 것이 행복해지면 masterrelease (git push origin release:master)으로 빨리 전달되고 현재 v2은 (는) 현재 라이브입니다.
  • 반복하십시오! 어떤 지점에서 릴리스 후보 테스트에 실패하면

release 지점은 그래서 feature-Y는 메인 라인의 더 이상 일부가 아닙니다, 멀리 던져 master (git push -f origin master:release)로 다시 되감기됩니다. 그러나 v2은 여전히 ​​후손을위한 자식에 존재합니다.

+0

매우 유익한 정보입니다. 감사합니다. –

관련 문제