티스토리 뷰

development

GitHub merge queue

주먹불끈 2023. 7. 17. 15:14

미드저니

개요

GitHub에서 merge queue 기능를 공개했다. GA(Generally Available) - 누구나 쓸 수 있다는 말이다.

관련 링크

TL;DR

팀이 크고 PR이 팍팍 올라오는데 Code conflict를 해결한다 하더라도 코드가 꼬일 수가 있다면 merge queue를 쓰면 된다.

작은 조직이라면? 작게, 빨리빨리 PR을 올리고 머지하면 되고, 자신의 PR을 올릴때에는 최신 소스를 rebase해서 그 위에서 PR을 작성하여 올리면 된다. 가끔 가는 충돌, 오류는 수작업으로 한땀한땀 해결하자.

Merge queue

해결하려는 문제

같은 main 브랜치의 커밋에서 따서 작업한 feature1, 2라면 각각은 문제 없음을 확인하고, 심지어는 코드상의 충돌이 없다 할지라도 둘을 모두 main에 머지하면 동작의 개념상에 오류가 발생할 수 있다(semantic conflict - 의미적 충돌)

해결 방법

PR을 올리면 그 순서대로 merge queue에 들어가게 되는데, 늦게 들어간 PR은 이전의 PR을 모두 머지한 베이스 위에 자신의 수정사항을 포함하여 들어가게 된다.

그래서 이렇게 통합된 PR은 CI(Continuous Integration)상의 체크사항을 모두 확인하게 되는데, 아래의 PR3과 같이 체크를 통과하지 못하면 queue에서 튕겨나가게 된다. 수정하고 다시 queue에 밀어넣는다면? 이전의 위치가 아니고 그 순간의 가장 마지막 위치에 들어가고, 다시 CI 체크를 하게 된다.

참고. stacked changes vs. merge queue

예전 컨퍼런스에서 치즈님이 stacked changes 라는 개념을 소개하셨던 기억이 났고 유사하다는 생각이 들어서 GPT-4에 둘의 차이를 물어보았다.

발표 정리 링크: https://bit.ly/3NTsmd9

GPT-4의 비교

링크: https://chat.openai.com/share/7b69b4e6-860c-4f4d-a2df-69b6df8ea345

stacked changesmerge queue는 버전 관리 시스템에서 주로 사용되는 두 가지 다른 개념입니다. 둘에 대해 간단히 설명하겠습니다:

  1. stacked changes: 이것은 버전 관리, 특히 Git에서 사용되는 개념으로, 여러 변경사항(커밋)이 각각 이전 것에 의존하는 형식으로 쌓여 있는 것을 말합니다. 이는 각 커밋이 기능의 다른 부분을 나타내는 피처 브랜치에서 사용될 수 있습니다. 각 커밋은 명확하게 정의되어 있어, 더 깔끔한 히스토리를 만들고 디버깅을 용이하게 합니다. 이 방법의 단점은, 다른 브랜치들이 같은 코드 섹션을 수정하면 충돌이 발생하여 정기적인 머지나 리베이스를 필요로 할 수 있다는 점입니다.
  2. merge queue: merge queue는 일반적으로 지속적인 통합(CI) 시스템의 일부입니다. 개발자들이 변경사항을 머지하기 위해 풀 리퀘스트를 열 때, 이러한 변경사항들은 머지 큐로 들어갑니다. 그런 다음 CI 시스템은 이러한 변경사항들을 하나씩 테스트하고 머지함으로써, 마스터(또는 메인) 브랜치가 항상 작동하는 상태를 유지합니다. 머지 큐는 머지 충돌을 자동으로 처리하며, 머지로 인해 테스트가 실패하게 될 경우 프로세스를 중단함으로써 메인 브랜치의 중단을 방지할 수 있습니다. 이러한 프로세스는 GitHub과 같은 플랫폼에서 자동-머지 기능으로 사용됩니다.

두 개념 모두 코드베이스에서 여러 변경사항을 처리하는 데 관련이 있지만, 개발 수명주기의 다른 측면에서 사용됩니다. stacked changes은 개발 과정 자체에서 변경사항을 관리하고 조직하는 데 더 관련이 있으며, merge queue는 이러한 변경사항을 안전하고 효율적으로 메인 코드베이스에 통합하는 것에 관한 것입니다.

반응형

'development' 카테고리의 다른 글

IntelliJ에 Jira 연동하기  (0) 2023.09.26
11개의 API 취약점  (0) 2023.08.04
황당버그 - 튜브 때문에 다운되다  (0) 2023.06.04
황당버그 - 우크라이나 소떼들  (0) 2023.06.03
황당버그 - Crash Bandicoot 게임  (0) 2023.06.03
반응형
잡학툰 뱃지
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함