변경 제안, 검토와 충돌 해결
작업 브랜치에서 변경을 마쳤으면 Save로 저장하고 위쪽의 Propose를 선택합니다. Propose는 현재 변경을 자동 저장하는 경로이기도 합니다.
제목과 설명에 변경 목적과 검토할 내용을 적고 Create proposal을 선택합니다. 가상 예시에서는 Facility 원천의 열 이름을 정리하는 Rename column을 추가합니다.
검토 화면과 차이 비교
Proposal 목록의 open 항목에서 대상 제안을 엽니다. 원천 및 대상 브랜치, 설명과 오류를 확인할 수 있습니다. 파이프라인의 Edit 접근을 가진 사용자가 승인할 수 있으며, 보호 정책에서 요구하는 승인자는 변경에 직접 기여하지 않아야 합니다.
Changes에서 기준 브랜치와 제안 브랜치를 비교합니다. 왼쪽 패널로 Transforms, Outputs 같은 변경 유형을 고를 수 있습니다.
| 표시 | 의미 |
|---|---|
| ADD | 새 노드를 추가합니다. |
| MOD | 기존 노드를 변경합니다. |
| DEL | 노드를 삭제합니다. |
각 항목을 선택하면 양쪽 버전을 나란히 볼 수 있습니다. 예시의 Join person data는 기존 조인에 CITY 열을 추가합니다.
열 통계
변환을 두 번 클릭하고 오른쪽 위 또는 아래 패널의 Statistics를 선택합니다.
View column stats로 열별 지표를 비교합니다.
null 수와 고유값 수, 문자열의 최소 및 최대 길이와 공백 정리가 필요한 값 수를 볼 수 있습니다. 수치 열에는 최소, 최대, 평균, 중앙값, 표준편차와 0, 음수, 양수의 지표가 표시됩니다. 기준 브랜치와의 차이는 지표 오른쪽에 색으로 표시됩니다.
검토 완료 표시
노드나 설정 변경을 선택하고 그래프 아래의 Mark as reviewed 또는 해당 체크박스를 선택합니다.
오른쪽 위 진행 표시줄에서 전체 변경 중 확인한 수를 봅니다. 이 표시는 사용자별로 관리하므로 다른 검토자의 상태를 바꾸지 않습니다. 이미 검토한 항목에 새 변경이 생기면 자동으로 미검토 상태로 돌아갑니다.
댓글
Overview 아래에 전체 제안의 댓글을 남길 수 있습니다. 해결한 댓글은 기본적으로 숨겨져 있으며 필요하면 표시를 켭니다.
특정 노드에 남기려면 Changes의 왼쪽 Comments를 열고 노드를 선택한 뒤 댓글 아이콘을 누르거나 노드 안으로 들어갑니다.
노드 오른쪽 위 댓글 아이콘에서 댓글을 추가합니다. 전체 댓글 수와 해결된 수를 볼 수 있으며 왼쪽 패널에는 파이프라인 전체 댓글 목록이 유지됩니다.
댓글은 굵게, 기울임, 링크와 코드 블록을 포함한 Markdown을 지원합니다. 제출 후 Edit, Copy, Resolve, Delete를 사용할 수 있으며 @로 사용자를 지정할 수 있습니다.
해결과 다시 열기
노드 팝업이나 Comments 패널의 점 세 개 메뉴에서 Resolve를 선택합니다.
한 노드의 미해결 댓글을 모두 처리하려면 패널에서 Resolve all을 선택합니다.
해결한 댓글은 패널의 해당 목록이나 팝업의 Show resolved로 볼 수 있습니다. Unresolve 또는 Unresolve all로 다시 열 수 있습니다.
댓글이 달린 블록을 삭제했더라도 댓글은 Comments 패널과 proposal의 Overview에 남으므로 그 화면에서 해결할 수 있습니다.
스키마 오류 해결
제안에 스키마 또는 편집 오류가 있으면 병합 전에 해결해야 합니다.
Fix schemas를 선택하면 오류가 있는 그래프로 이동합니다.
해당 단계를 두 번 클릭하여 잘못된 조건을 수정합니다. 이후 Propose로 저장하고 수정한 제안을 반영합니다.
기준 브랜치의 변경 가져오기
최종 병합 전에 기준 브랜치의 새 변경을 현재 브랜치에 가져오면 충돌을 미리 처리할 수 있습니다. 브랜치 옆의 Resolve changes를 선택합니다.
가져올 브랜치를 고르고 Apply changes를 선택합니다.
이 작업은 변경을 받는 현재 브랜치에 직접 저장합니다. 그 브랜치가 보호되어 있으면 사용할 수 없으므로 proposal로 병합해야 합니다.
장기 브랜치 맞추기
Staging과 deployment 같은 장기 브랜치 사이에서 일반 proposal을 반복하면 squash merge가 공유 이력을 끊어 같은 충돌이 반복될 수 있습니다. 상태를 맞추려는 브랜치에서 Resolve changes로 원천 브랜치를 고르고 Apply changes를 사용하면 squash commit을 만들지 않고 fast-forward 방식으로 맞출 수 있습니다. 변경을 받는 브랜치의 보호 제한은 동일하게 적용됩니다.
병합 충돌과 rebase
분기 이후 기준 브랜치의 새 변경이 현재 변경과 충돌하면 proposal의 Resolve를 선택합니다.
Rebasing branches 화면에서 위쪽 또는 왼쪽 목록으로 충돌과 변경을 확인합니다. 영향받는 노드의 오른쪽 위 기호에 마우스를 올리면 설명과 가능한 해결 방법을 볼 수 있으며 해당 기호를 두 번 클릭하여 해결할 수 있습니다.
해결 후 오른쪽 위 Submit으로 브랜치와 제안에 반영합니다. 제출 전 드롭다운에는 다음 옵션이 있습니다.
| 옵션 | 효과 |
|---|---|
| Discard new changes from {base branch} | 기준 브랜치의 새 변경을 모두 거부하고 자신의 head 브랜치 변경만 유지합니다. 기본 동작은 충돌하지 않는 기준 브랜치 변경도 함께 병합하는 것입니다. |
| Squash intermediate versions | 제출할 때 중간 버전을 하나로 합칩니다. 중간 버전이 많은 큰 rebase에서 관련 오류를 줄일 때 사용할 수 있습니다. |
브랜치 초기화
브랜치 이름 왼쪽 드롭다운의 Reset branch에서 맞출 대상 브랜치를 선택하고 확인합니다. 두 브랜치가 같은 버전이면 버튼이 비활성화됩니다.
Reset은 되돌릴 수 없습니다. 원래 브랜치의 저장한 변경과 저장하지 않은 변경이 모두 사라지며, 현재 브랜치의 로직과 버전 이력이 선택한 브랜치와 같아집니다. 필요한 변경을 잃지 않도록 초기화 대상을 확인해야 합니다.