2014-01-07 4 views
1
나는 우리의 마스터 분기가 정기적으로 우리의 개발자 지점에 병합되는 것을 보장하는 임무입니다

.도구는 여러 망할 놈의 로그를 볼 수 있습니다 한 번에

우리의 구조는 다음과 같다. 우리는 4 개의 저장소를 가지고 있습니다. 각각의 저장소에는 주된 마스터 브랜치가 있고, 약 5-10 개의 개발자 브랜치가 주어진 시간에 작업되고 있습니다. 개발자 분기는 하루에서 3 개월 사이에 활성화 될 수 있으며 분기 이름은 중복되지 않습니다.

일주일에 한 번 마스터 분기뿐만 아니라 모든 개발자 분기를 검사하고 어떤 분기가 병합되었는지, 어떤 분기가 병합되었는지 그리고 마지막 병합이 발생했는지 추적해야합니다. 나는 현재 등 SmartGit을 사용하고 지점으로 전환하고 로그를 확인하여이 일을하고

그러나 나는이 과정을 빨리 또는 가능한 자동화하고 싶습니다.

이 작업을 수행 할 도구가 있습니다, 내가이 일을 쓸 수있는 박쥐 스크립트가? 다른 자식 관련된 질문을 보면

, 나는 가능성이

git show :/"Merge branch 'master'" 

git log --pretty=format 

의 조합을 사용할 수 있습니다 참조하지만이 빠르고 쉽게보다 더 할 것입니다 뭔가 빠진해야 현재 수동 방법.

편집 :

대답은 지금까지 나를 두 개의 주름을 추가 할 수있는 매우 유망한왔다.

  1. 나는 두 방향을 추적해야합니다. 개발자 브랜치가 마스터에서 병합되고 마스터 브랜치와 병합 될 때.
  2. 우리는 "생산"이라 불리는 모니터링해야 할 세 번째 가지를 가지고 있습니다. 마스터와 다른 브랜치를 비교하는 대답은 "프로덕션"브랜치와 다양한 지명 된 브랜치 브랜치를 비교하는 것일 수 있습니까?

답변

0

간단한 워크 플로 변경 중 하나는 git log--all 옵션을 사용하는 것입니다.

저장소에있는 모든 지점에서이 원인 로그 항목은 로그에 포함된다. 이것을 다른 옵션과 결합하면 ~ 30 (지점 당 하나)에서 4 (저장소 당 하나)까지 로그 spelunking을 줄일 수 있습니다.

git log --all --graph --decorate 

어떤 사람들은 또한 --oneline를 사용하려면,하지만 난 그것에 대해 미치지 않았어 :

필요에 따라 이러한 다른 옵션이 유용 할 수있다. 시각화를 사용하지 않고도 쉽게 시각화를 찾을 수 있지만 두 가지 방법으로 실험 해보십시오.

master에서 연결할 수없는 커밋을 <branch-name>에서 볼 수있는 git log master..<branch-name>을 탐색 할 수도 있습니다. 이것은 실제로 당신이 찾고있는 커밋 목록입니다. 이것은 아마도 각 브랜치에서리스트를 생성하기 위해 스크립팅 될 수 있습니다.

accepted answer from this questiongit for-each-ref을 사용하는 스크립트를 통해 분기를 반복하는 방법에 대해 자세히 설명합니다.

+0

마지막 두 번째 단락에서 나는'git diff'보다는'git log'를 의미한다고 생각합니다. –

+0

@ MagnusBäck, 물론 고마워요. – Chris

0

도움이 될까요?

# view the branches that have been merged already 
git branch --merged 

# view the branches that have NOT been merged yet 
git branch --no-merged 
+0

도움이 될 것입니다. 나는 그 질문을 갱신했다. – Bob

0

git log 한 브랜치에는 있지만 다른 브랜치에는없는 커밋을 나열하는 데 사용할 수 있습니다. 예를 들어, 커밋

git log developer..master 

쇼 마스터 브랜치가 아니라 개발자 분기 및

git log master..developer 

자연스럽게 반대의 일을 도달했습니다. 다양한 서식 옵션과 결합하여 원하는대로 보고서를 작성할 수 있습니다.

개발자 분기가 마스터 분기에서 업데이트 된시기를 확인하려면 git merge-base을 사용하면 두 분기에 공통된 최신 커밋을 찾을 수 있습니다. 가장 최근의 병합이 다른 방식보다는 개발자에서 마스터 인 경우 그러한 커밋은 개발자 분기에있을 수 있지만 개발자 분기의 수명이 끝난 시점에서 마스터에만 병합하면이 커밋이 문제가된다.