스니펫

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

GitLab 스니펫을 사용하면 코드와 텍스트 조각을 저장하고 다른 사용자와 공유할 수 있습니다. 스니펫에서 의견을 나눌, 복제할, 그리고 버전 관리를 사용할 수 있습니다. 스니펫에는 여러 파일을 포함할 수도 있습니다. 또한 구문 강조, 임베딩, 다운로드도 지원하며, 스니펫 API를 사용하여 스니펫을 유지할 수 있습니다.

다음과 같은 방법으로 스니펫을 만들고 관리할 수 있습니다.

스니펫의 예시

GitLab은 두 가지 유형의 스니펫을 제공합니다.

  • 개인 스니펫: 프로젝트와는 독립적으로 생성됩니다. 스니펫에 대한 가시성 수준을 설정 할 수 있으며, 공개 또는 비공개로 설정할 수 있습니다.
  • 프로젝트 스니펫: 특정 프로젝트와 항상 관련됩니다. 프로젝트 스니펫은 공개적으로 표시되거나 프로젝트 구성원만 볼 수 있습니다.
note
2019년 7월부터 Internal 가시성 설정은 GitLab.com에서 새로운 프로젝트, 그룹 및 스니펫에 대해 비활성화되었습니다. Internal 가시성 설정을 사용하고 있는 기존 스니펫은 이 설정을 유지합니다. 변경 사항에 대해 더 읽으려면 관련 이슈를 확인하세요.

스니펫 생성

개인 또는 프로젝트 스니펫을 만들고자 하는 경우 여러 방법으로 스니펫을 만들 수 있습니다.

  1. 생성하려는 스니펫 유형을 선택합니다:
    • 개인 스니펫을 만들려면 다음 중 하나를 수행하세요:
      • 스니펫 대시보드에서 새로 만들기를 선택합니다.
      • 프로젝트에서: 왼쪽 사이드바에서 새로 만들기()를 선택합니다. GitLab 내에서 아래에서 새로 만들기를 선택합니다.
      • 다른 페이지에서: 왼쪽 사이드바에서 새로 만들기()를 선택한 후 새로 만들기를 선택합니다.
      • glab CLI에서 glab snippet create 명령을 사용합니다. 전체 지침은 해당 명령의 문서를 참조하세요.
      • VS Code용 GitLab Workflow 확장 프로그램이 설치되어 있다면, Gitlab: Create snippet 명령을 사용합니다.
    • 프로젝트 스니펫을 만들려면: 프로젝트 페이지로 이동합니다. 새로 만들기()를 선택합니다. 이 프로젝트에서 아래에서 새로 만들기를 선택합니다.
  2. 제목에 제목을 추가합니다.
  3. 선택 사항. 설명에 스니펫을 설명합니다.
  4. 파일에서 파일에 적절한 이름과 확장자를 지정합니다(예: example.rb 또는 index.html). 적절한 확장자가 있는 파일명은 구문 강조를 표시합니다. 파일명을 제공하지 않으면 알려진 복사 붙여넣기 버그가 발생할 수 있습니다. 파일명을 제공하지 않으면 GitLab이 이름을 생성합니다.
  5. 선택 사항. 여러 파일을 스니펫에 추가합니다.
  6. 가시성 수준을 선택한 후 스니펫 생성을 선택합니다.

스니펫을 만든 후에도 추가 파일을 추가할 수 있습니다. 스니펫은 기본적으로 버전 관리됩니다.

스니펫 탐색

GitLab에서 볼 수 있는 모든 스니펫을 찾으려면 다음을 수행할 수 있습니다.

  • 프로젝트 스니펫 보기:
    1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
    2. 코드 > 스니펫을 선택합니다.
  • 생성한 모든 스니펫 보기:
    1. 왼쪽 사이드바에서 검색 또는 이동을 선택합니다.
    2. 내 작업을 선택합니다.
    3. 스니펫을 선택합니다.

    GitLab.com에서는 스니펫을 직접 방문할 수도 있습니다.

  • 모든 공개 스니펫 탐색:
    1. 왼쪽 사이드바에서 검색 또는 이동을 선택합니다.
    2. 탐색을 선택합니다.
    3. 스니펫을 선택합니다.

    GitLab.com에서는 모든 공개 스니펫을 직접 방문할 수도 있습니다.

스니펫의 기본 가시성 변경

프로젝트 스니펫은 기본적으로 사용이 활성화됩니다. 그들의 기본적인 가시성을 변경하려면:

  1. 프로젝트에서 설정 > 일반으로 이동합니다.
  2. 가시성, 프로젝트 기능, 권한 섹션을 확장하고 스니펫로 스크롤합니다.
  3. 기본 가시성을 전환하고 스니펫을 모든 사람이 볼 수 있게 할 것인지 또는 프로젝트 구성원만 볼 것인지 선택합니다.
  4. 변경 사항 저장을 선택합니다.

버전 관리된 스니펫

개인 및 프로젝트 스니펫은 기본적으로 버전 관리를 사용합니다.

이것은 모든 스니펫이 만들어질 때 기본 브랜치에서 자체 리포지토리가 초기화된다는 것을 의미합니다. 스니펫을 변경할 때마다 기본 브랜치에 새로운 커밋이 기록됩니다. 커밋 메시지는 자동으로 생성됩니다. 스니펫의 리포지토리에는 하나의 브랜치만 있습니다. 이 브랜치를 삭제하거나 다른 브랜치를 생성할 수 없습니다.

파일명

스니펫은 파일명 및 확장명에 기반한 구문 강조를 지원합니다. 파일명 및 확장명을 제공하지 않고 스니펫을 제출할 수 있지만, 리포지토리의 파일로서의 내용을 만들기 위해서는 유효한 이름이 필요합니다.

스니펫에 파일명과 확장명을 제공하지 않으면, GitLab은 파일명을 snippetfile<x>.txt 형식으로 추가합니다. 여기서 <x>는 파일에 추가된 번호를 나타내며, 1부터 시작하여 숫자가 증가합니다. 이전 버전의 GitLab에서 13.0으로 업그레이드하는 경우, 지원되는 파일명이 없는 기존 스니펫은 호환되는 형식으로 이름이 변경됩니다. 예를 들어, 스니펫의 파일명이 http://a-weird-filename.me이면 http-a-weird-filename-me로 변경되어 스니펫의 리포지토리에 포함됩니다. 스니펫은 ID로 저장되므로 파일명을 변경하면 스니펫에 대한 직접적이거나 포함된 링크가 깨집니다.

여러 파일 추가 또는 제거

단일 코드 조각은 스크립트 및 해당 출력과 같이 연관된 파일을 최대 10개까지 지원하여 관련 파일을 함께 유지할 수 있습니다.

  • 스크립트와 해당 출력이 포함된 코드 조각
  • HTML, CSS 및 JavaScript 코드가 포함된 코드 조각
  • docker-compose.yml 파일과 관련된 .env 파일이 포함된 코드 조각
  • gulpfile.js 파일과 package.json 파일은 프로젝트를 초기화하고 의존성을 관리하는 데 사용될 수 있습니다.

코드 조각에 10개 이상의 파일이 필요한 경우 위키를 대신 만들어야 합니다. 위키는 모든 구독 수준의 프로젝트 및 그룹에서 사용할 수 있으며 GitLab Premium에서도 사용할 수 있습니다.

여러 파일이 있는 코드 조각은 코드 조각 목록에 파일 수를 표시합니다:

코드 조각 예시

Git (버전 관리 파일)으로 코드 조각을 관리하거나 코드 조각 API 및 GitLab UI를 통해 처리할 수 있습니다.

GitLab UI를 통해 코드 조각에 새 파일을 추가하려면:

  1. GitLab UI에서 코드 조각으로 이동합니다.
  2. 오른쪽 상단의 편집을 선택합니다.
  3. 다른 파일 추가를 선택합니다.
  4. 제공된 양식 필드에 콘텐츠를 추가합니다.
  5. 변경 사항 저장을 선택합니다.

GitLab UI를 통해 코드 조각에서 파일을 삭제하려면:

  1. GitLab UI에서 코드 조각으로 이동합니다.
  2. 오른쪽 상단의 편집을 선택합니다.
  3. 삭제할 각 파일의 파일 이름 옆에 파일 삭제를 선택합니다.
  4. 변경 사항 저장을 선택합니다.

코드 조각 복제

업데이트를 받으려면 로컬로 복사하는 대신 코드 조각을 복제합니다. 복제하면 코드 조각과 리포지토리가 연결된 상태를 유지할 수 있습니다.

코드 조각을 복제하려면:

  • 복제를 선택한 다음 SSH 또는 HTTPS로 복제할 URL을 복사합니다.

변경 사항을 복제된 코드 조각에 커밋하고 GitLab에 변경 사항을 푸시할 수 있습니다.

코드 조각 임베드

공개 코드 조각은 모든 웹사이트에 공유되어 임베드될 수 있습니다. GitLab 코드 조각을 여러 위치에서 재사용할 수 있으며 원본에 대한 모든 변경 사항이 임베드된 코드 조각에 반영됩니다. 임베드된 코드 조각에서 사용자는 해당 코드를 다운로드하거나 원시 형식으로 볼 수 있습니다.

코드 조각을 임베드하려면:

  1. 코드 조각이 공개로 표시됨을 확인합니다:
    • 프로젝트 코드 조각인 경우 프로젝트가 공개여야 합니다.
    • 코드 조각은 공개로 표시됩니다.
    • 프로젝트에서 설정 > 일반으로 이동합니다. 가시성, 프로젝트 기능, 권한 섹션을 확장한 다음 코드 조각으로 스크롤하여 코드 조각 권한을 모두 접근 가능으로 설정합니다.
  2. 코드 조각의 임베드 섹션에서 웹사이트 또는 블로그 글에 추가할 수 있는 한 줄 스크립트를 복사하기 위해 복사를 선택합니다. 예:

    <script src="https://gitlab.com/namespace/project/snippets/SNIPPET_ID.js"></script>
    
  3. 파일에 스크립트를 추가합니다.

임베드된 코드 조각은 다음을 표시하는 헤더가 포함됩니다:

  • 파일 이름(정의된 경우)
  • 코드 조각 크기
  • GitLab 링크
  • 실제 코드 조각 콘텐츠

예를 들어:

코드 조각 다운로드

코드 조각의 원시 콘텐츠를 다운로드할 수 있습니다. 기본적으로 Linux 스타일 줄 끝 (LF)로 다운로드됩니다. 원래 줄 끝을 보존하려면 매개변수 line_ending=raw를 추가해야 합니다 (예: https://gitlab.com/snippets/SNIPPET_ID/raw?line_ending=raw). GitLab 웹 인터페이스를 사용하여 코드 조각을 생성한 경우 원래 줄 끝은 Windows 스타일 (CRLF)입니다.

코드 조각에 댓글 작성

코드 조각을 사용하면 해당 코드 조각에 대한 대화를 진행하여 사용자 협업을 촉진할 수 있습니다.

코드 조각을 스팸으로 표시

Tier: Free, Premium, Ultimate Offering: Self-managed, GitLab Dedicated

Self-managed GitLab 인스턴스의 관리자는 코드 조각을 스팸으로 표시할 수 있습니다.

전제 조건:

  • 해당 인스턴스의 관리자여야 합니다.
  • 인스턴스에서 Akismet 스팸 보호가 활성화되어 있어야 합니다.

이 작업 수행 방법:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하여 프로젝트를 찾습니다.
  2. 코드 > 코드 조각을 선택합니다.
  3. 스팸으로 신고할 코드 조각을 선택합니다.
  4. 스팸으로 제출을 선택합니다.

GitLab은 스팸을 Akismet으로 전달합니다.

문제 해결

코드 조각 제한사항

  • 생성할 수 있는 코드 조각에는 제한이 없습니다.
  • 이진 파일은 지원되지 않습니다.
  • 브랜치를 생성하거나 삭제할 수 없습니다. 기본 브랜치만 사용됩니다.
  • 코드 조각 리포지토리에서 Git 태그는 지원되지 않습니다.
  • 코드 조각 리포지토리는 10개의 파일로 제한됩니다. 10개 이상의 파일을 푸시하려고 하면 오류가 발생합니다.
  • 사용자는 GitLab UI에서 리비전을 볼 수 없으나 업데이트를 위한 issue가 있습니다.
  • 기본 코드 조각의 최대 크기 및 현재(2024-04-17 기준)는 50MB입니다.
  • Git LFS는 지원되지 않습니다.

코드 조각 리포지토리 크기 축소

버전 관리되는 코드 조각은 네임스페이스 저장소 크기의 일부로 간주되기 때문에 코드 조각 리포지토리를 가능한 한 컴팩트하게 유지하는 것이 좋습니다.

리포지토리 크기를 축소하는 도구에 대한 자세한 정보는 리포지토리 크기 축소 문서를 참조하세요.

코드 조각 텍스트 상자에 텍스트 입력할 수 없음

파일 이름 필드 뒤의 텍스트 영역이 비활성화되어 새 코드 조각을 만드는 데 방해가 되는 경우 다음 방법을 사용하세요:

  1. 코드 조각에 제목을 입력합니다.
  2. 파일 추가를 선택하여 파일 추가 필드 하단으로 스크롤합니다. GitLab은 두 번째 파일을 추가할 수 있는 추가 양식을 표시합니다.
  3. 두 번째 파일의 파일 이름 필드에 알려진 복사 및 붙여넣기 버그를 피하기 위해 파일 이름을 입력합니다.
  4. 두 번째 파일의 텍스트 영역에 어떠한 문자열을 입력합니다.
  5. 첫 번째 파일의 파일 이름으로 스크롤하여 파일 삭제를 선택합니다.
  6. 나머지 파일을 생성하고 완료되면 코드 조각 생성을 선택합니다.

관련 주제