변경 제안
리뷰어는 Merge Request(Merge Request) diff 스레드에서 Markdown 구문을 사용하여 코드 변경을 제안할 수 있습니다. Merge Request 작성자(또는 적절한 역할을 가진 다른 사용자)는 GitLab UI에서 제안 중 하나 이상을 적용할 수 있습니다. 제안을 적용하면, 사용자가 변경을 제안한 커밋이 Merge Request에 추가됩니다.
제안 생성
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 코드 > Merge Request을 선택하고 Merge Request을 찾습니다.
- 보조 메뉴에서 변경 사항을 선택합니다.
- 변경하려는 코드 라인을 찾습니다.
- 단일 라인을 선택하려면 라인 번호 위로 마우스를 올리고 이 라인에 코멘트 추가를 선택합니다().
- 여러 라인을 선택하려면:
- 라인 번호 위로 마우스를 올리고 이 라인에 코멘트 추가()를 선택합니다:
- 선택하고 원하는 모든 라인이 포함될 때까지 드래그합니다. 자세한 내용은 다중 라인 제안을 참조하세요.
-
코멘트 툴바에서 제안 삽입()을 선택합니다. GitLab은 다음과 같이 미리 채워진 코드 블록을 코멘트에 삽입합니다.
```suggestion:-0+0 선택한 라인의 내용이 여기에 표시됩니다. ```
- 미리 채워진 코드 블록을 편집하여 제안을 추가합니다.
- 즉시 코멘트를 추가하려면 지금 코멘트 추가를 선택하거나 키보드 단축키를 사용합니다:
- macOS: Shift + Command + Enter
- 다른 OS: Shift + Control + Enter
-
리뷰를 완료할 때까지 코멘트를 게시하지 않으려면 리뷰 시작을 선택하거나 키보드 단축키를 사용합니다:
- macOS: Command + Enter
- 다른 OS: Control + Enter
다중 라인 제안
Merge Request diff를 검토할 때 다음 중 하나로 여러 라인(최대 200줄)에 대한 변경 사항을 제안할 수 있습니다:
- 제안 생성에 설명된 대로 선택하고 드래그합니다. GitLab은 제안 블록을 생성합니다.
- 단일 라인을 선택한 다음, 제안 블록에서 범위 오프셋을 매뉴얼으로 편집합니다.
제안의 첫 번째 행의 범위 오프셋은 선택한 라인을 기준으로 상대적인 라인 번호를 설명합니다. 오프셋은 제안이 대체할 의도인 라인을 지정합니다. 예를 들어, 이 제안은 주석이 달린 라인 위아래로 2줄을 포함합니다:
```suggestion:-2+2
## 작성자에 의한 승인 방지
기본적으로 Merge Request의 작성자는 승인할 수 없습니다. 이 설정을 변경하려면:
```
적용되면, 제안은 주석이 달린 라인 위에서부터 아래로 2줄을 대체합니다:
여러 줄에 대한 제안은 주석이 달린 diff 라인 위에 100줄 _이하_와 아래에 100줄 _이하_까지 제한됩니다. 이로 인해 제안 당 최대 200줄까지 변경될 수 있습니다.
여러 줄 코멘트는 코멘트의 라인 번호가 코멘트 본문 위에 표시됩니다:
리치 텍스트 편집기 사용
- GitLab 16.1에 도입되었으며
content_editor_on_issues
라는 플래그로 제어됩니다. 기본으로 사용하지 않습니다.- GitLab 16.2에서 사용 중단됨으로 GitLab.com 및 Self-Managed형에서 사용됩니다.
- GitLab 16.5에서
content_editor_on_issues
플래그가 제거되었습니다.
제안을 삽입할 때 UI에서 소스 파일의 라인 번호를 이동하는 데 WYSIWYG 리치 텍스트 편집기를 사용할 수 있습니다.
변경된 라인을 추가하거나 빼려면 From line 옆에서 + 또는 -를 선택합니다.
제안 적용
사전 요구 사항:
- Merge Request의 작성자이거나 프로젝트에서 적어도 개발자 역할을 가져야 합니다.
Merge Request에서 제안된 변경을 직접 적용하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 코드 > Merge Request을 선택하고 Merge Request을 찾습니다.
- 제안을 적용하려는 코멘트를 찾습니다.
- 개별적으로 제안을 적용하려면 제안 적용을 선택합니다.
- 여러 제안을 하나의 커밋에 적용하려면 일괄 제안에 추가를 선택합니다.
- 선택 사항. 변경 사항을 설명하는 사용자 정의 커밋 메시지를 제공합니다. 사용자 지정 메시지를 제공하지 않으면 기본 커밋 메시지가 사용됩니다.
- 적용을 선택합니다.
제안이 적용된 후:
- 해당 제안이 적용됨으로 표시됩니다.
- 코멘트 스레드가 해결됩니다.
- GitLab은 변경 사항이 포함된 새로운 커밋을 생성합니다.
- 사용자가 개발자 역할을 가지고 있으면 GitLab은 제안된 변경을 Merge Request의 브랜치에서 직접 코드베이스로 푸시합니다.
제안에 코드 블록 중첩
fenced code block를 포함하는 제안을 추가하려면 세 개가 아닌 네 개의 역따옴표로 제안을 둘러싸십시오:
````suggestion:-0+2
```shell
git config --global receive.advertisepushoptions true
```
````
적용된 제안의 커밋 메시지 구성
GitLab은 제안을 적용할 때 기본 커밋 메시지를 사용합니다.
이 메시지는 플레이스홀더를 지원하며 변경할 수 있습니다. 예를 들어, 기본 메시지
Apply %{suggestions_count} suggestion(s) to %{files_count} file(s)
는
두 개의 파일에 세 개의 제안을 적용하면 다음과 같이 렌더링됩니다:
Apply 3 suggestion(s) to 2 file(s)
포크에서 생성된 Merge Request은 대상 프로젝트에서 정의된 템플릿을 사용합니다. 프로젝트의 요구 사항을 충족시키기 위해 이러한 메시지를 사용자 정의하고 다른 플레이스홀더 변수를 포함하세요.
사전 요구 사항:
- 관리자 역할을 가져야 합니다.
다음과 같이 진행합니다:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 설정 > Merge Request을 선택합니다.
- 제안 Merge으로 스크롤하고 텍스트를 변경하여 요구 사항에 맞게 적용합니다. 지원되는 변수 디렉터리은 지원되는 변수를 참조하세요.
지원되는 변수
적용된 제안에 대한 커밋 메시지 템플릿은 다음과 같은 변수를 지원합니다:
변수 | 설명 | 예시 출력 |
---|---|---|
%{branch_name}
| 제안이 적용된 브랜치의 이름 | my-feature-branch
|
%{files_count}
| 제안이 적용된 파일 수 | 2
|
%{file_paths}
| 제안이 적용된 파일의 경로. 경로는 쉼표로 구분됩니다. | docs/index.md, docs/about.md
|
%{project_path}
| 프로젝트 경로 | my-group/my-project
|
%{project_name}
| 프로젝트의 사람이 읽을 수 있는 이름 | My Project
|
%{suggestions_count}
| 적용된 제안의 수 | 3
|
%{username}
| 제안을 적용하는 사용자의 사용자 이름 | user_1
|
%{user_full_name}
| 제안을 적용하는 사용자의 전체 이름 | User 1
|
%{co_authored_by}
|
Co-authored-by Git 커밋 트레일러 형식의 제안 저자의 이름과 이메일
|
Co-authored-by: Zane Doe <zdoe@example.com> Co-authored-by: Blake Smith <bsmith@example.com>
|
예를 들어, 커밋 메시지를 사용자 1의 리뷰와 연결되도록 출력을 user_1의 리뷰에 대응
으로 설정하려면
사용자 정의 텍스트를 Addresses %{username}'s review
로 설정하세요.
일괄 제안
전제 조건:
- 소스 브랜치에 커밋할 수 있는 프로젝트에서 역할을 가져야 합니다.
귀하의 브랜치에 추가된 커밋 수를 줄이려면 여러 제안을 하나의 커밋에 적용하십시오.
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾으세요.
- 코드 > Merge Request을 선택하고 Merge Request을 찾으세요.
- 적용하려는 각 제안에 대해 일괄 제안에 추가를 선택하세요.
- 선택 사항. 제안을 제거하려면 일괄 제안에서 제거를 선택하세요.
-
원하는 제안을 추가한 후 제안 적용을 선택하세요.
여러 작성자의 변경 내용을 포함하는 일괄 제안을 적용하는 경우, 결과 커밋의 작성자로 인정받게 됩니다. 만약 귀하의 프로젝트가 커밋을 추가하는 사용자의 승인 방지로 구성되어 있다면, 귀하는 더는 이 Merge Request의 승인자가 아닙니다. - 선택 사항. 일괄 제안에 대해 사용자 정의 커밋 메시지를 제공하여 변경 내용을 설명하세요. 지정하지 않으면 기본 커밋 메시지가 사용됩니다.