파일 잠금
해결할 수 없는 병합 충돌로 인해 발생하는 낭비를 방지하려면
다른 작업 방식을 요구합니다. 이는 명시적으로 작성 권한을 요청하고,
시작하기 전에 다른 사람이 동일한 파일을 편집하지 않는지 확인하는 것을 의미합니다.
소스 코드와 일반 텍스트에 대해 브랜칭 전략이 일반적으로 잘 작동하지만,
이들이 바이너리 파일에는 작동하지 않습니다.
파일 잠금이 설정되면 잠글 수 있는 파일은 기본적으로 읽기 전용입니다.
파일이 잠겨 있으면, 해당 파일을 잠근 사용자만 수정할 수 있습니다.
이 사용자를 “잠금을 보유하고 있다”고 하거나 “잠금을 취했다”고 말하며,
한 번에 한 사용자만 파일을 잠글 수 있습니다.
파일이나 디렉터리가 잠금 해제되면 사용자가 “잠금을 해제했다”고 합니다.
GitLab은 두 가지 서로 다른 파일 잠금 모드를 지원합니다:
-
독점 파일 잠금 (Exclusive file locks):
명령줄을 통해 Git LFS 및.gitattributes
로 수행되며,
잠긴 파일이 모든 브랜치에서 수정되지 않도록 합니다. -
기본 브랜치 잠금 (Default branch locks):
GitLab UI를 통해 수행되며, 기본 브랜치에서 잠긴 파일 및
디렉터리가 수정되지 않도록 합니다.
권한
잠금은 리포지토리에 대한
개발자 역할이 있는 모든 사람이 생성할 수 있습니다.
파일이나 디렉터리를 잠근 사용자만 잠긴 파일을 편집할 수 있습니다.
다른 사용자는 푸시, 병합 또는 기타 방법으로
잠긴 파일을 수정할 수 없으며, 다음과 같은 오류 메시지가 표시됩니다:
'.gitignore'는 @Administrator에 의해 잠겨 있습니다.
독점 파일 잠금
이 프로세스를 통해 단일 파일이나 파일 확장자를 잠글 수 있으며,
이는 명령줄을 통해 수행됩니다. GitLab 유료 구독이 필요하지 않습니다.
Git LFS는 Git 리포지토리의 저장소를 줄이기 위해 파일을 추적하는 데 잘 알려져 있지만,
파일을 잠그는 데에도 사용될 수 있습니다.
이것이 독점 파일 잠금에 사용되는 방법입니다.
Git LFS 설치
시작하기 전에
컴퓨터에 Git LFS가 설치되었는지 확인하세요.
터미널 창을 열고 다음을 실행합니다:
git-lfs --version
이 명령을 인식하지 못하면 설치해야 합니다.
OS에 따라 선택할 수 있는 여러 설치 방법이 있습니다.
Homebrew로 설치하려면:
brew install git-lfs
설치가 완료되면, 터미널 창에서 로컬 리포지토리를 열고
리포지토리에 Git LFS를 설치합니다.
LFS가 이미 설치되어 있다고 확신하면 이 단계를 건너뛸 수 있습니다.
확신이 없다면 다시 설치해도 문제 없습니다:
git lfs install
자세한 내용은 Git Large File Storage (LFS)를 참조하세요.
독점 파일 잠금 구성
명령줄을 통해 프로젝트의
독점 파일 잠금에 대한 유지 관리 역할이 필요합니다.
파일 잠금을 사용하기 전에 Git LFS에게
어떤 종류의 파일이 잠글 수 있는 파일인지 알려줘야 합니다.
다음 명령은 PNG 파일을 LFS에 저장하고 잠글 수 있는 파일로 플래그합니다:
git lfs track "*.png" --lockable
위의 명령을 실행하면 .gitattributes
라는 이름의 파일이
다음 내용을 포함하여 생성되거나 업데이트됩니다:
*.png filter=lfs diff=lfs merge=lfs -text lockable
LFS를 사용하지 않고도 파일 형식을 잠글 수 있도록 등록할 수 있습니다
(예를 들어, LFS 파일 잠금 API를 구현하는 원격 서버에서 필요할 경우).
이를 위해 .gitattributes
파일을 수동으로 편집할 수 있습니다:
*.pdf lockable
.gitattributes
파일은 이 과정의 핵심이며,
변경 사항이 적용되도록 원격 리포지토리에 푸시해야 합니다.
파일 유형이 잠글 수 있는 것으로 등록되면, Git LFS는
파일 시스템에서 자동으로 읽기 전용으로 만듭니다.
즉, 편집하기 전에 파일을 잠가야 합니다.
파일 잠금
파일을 잠그면 다른 사람이 파일을 편집하지 못하도록 확인하고
자신이 편집을 마칠 때까지 다른 사람이 파일을 편집하는 것을 방지합니다. 반면에, 파일의 잠금을 해제하면 편집이 완료되었음을 전달하고 다른 사람들이 파일을 편집할 수 있도록 허용합니다.
Exclusive File Locking으로 파일을 잠그거나 잠금을 해제하려면,
저장소 디렉토리에서 터미널 창을 열고 아래에 설명된 대로 명령을 실행하세요.
파일을 잠그려면:
git lfs lock path/to/file.png
파일의 잠금을 해제하려면:
git lfs unlock path/to/file.png
파일 ID로 잠금을 해제할 수도 있습니다(잠금된 파일을 보기할 때 LFS에서 제공됨):
git lfs unlock --id=123
자신이 잠금 해제하지 않은 파일을 잠금 해제해야 하는 경우 Maintainer 권한이 있는 한 --force
플래그를 사용할 수 있습니다:
git lfs unlock --id=123 --force
잠금된 파일과 잠금 해제된 파일 모두 GitLab으로 푸시할 수 있습니다.
독점적으로 잠금된 파일 보기
로컬에서 LFS로 잠금된 모든 파일을 나열하려면,
저장소에서 터미널 창을 열고 다음을 실행하세요:
git lfs locks
출력은 각 파일을 잠금한 사용자와 파일 ID와 함께 잠금된 파일을 나열합니다.
저장소 파일 트리에서 GitLab은 Git LFS로 추적된 파일에 대해 LFS 배지를 표시하며 독점적으로 잠금된 파일에는 자물쇠 아이콘을 표시합니다:
또한 GitLab UI에서 기존 잠금 보기 및 제거를 할 수 있습니다.
잠글 수 있는 파일 편집
파일이 잠글 수 있는 파일로 구성된 후, 읽기 전용으로 설정됩니다.
따라서 편집하기 전에 잠가야 합니다.
공유 프로젝트에 대한 권장 워크플로우:
- 파일을 잠급니다.
- 파일을 편집합니다.
- 변경 사항을 커밋합니다.
- 저장소에 푸시합니다.
- 변경 사항을 검토, 승인 및 병합합니다.
- 파일의 잠금을 해제합니다.
기본 브랜치 파일 및 디렉토리 잠금
이 프로세스를 통해 GitLab UI를 통해 한 번에 하나의 파일을 잠글 수 있으며,
GitLab Premium 또는 Ultimate Tier에 대한 액세스가 필요합니다.
기본 브랜치 파일 및 디렉토리 잠금은 프로젝트 설정에서 설정된
기본 브랜치에만 적용됩니다.
기본 브랜치의 잠금된 파일에 대한 변경 사항은 차단되며, 잠금된 파일을 수정하는 병합 요청을 포함합니다. 변경을 허용하려면 파일의 잠금을 해제하세요.
파일 또는 디렉토리 잠그기
파일을 잠그려면:
- GitLab에서 파일 또는 디렉토리를 엽니다.
- 오른쪽 상단 모서리에 있는 파일 위에서 잠금을 선택합니다.
- 확인 대화 상자에서 확인을 선택합니다.
파일을 잠글 권한이 없으면 버튼이 활성화되지 않습니다.
디렉토리를 잠금한 사용자(본인이 아닌 경우)를 보려면, 버튼 위에 마우스를 올리세요. 잠금된 파일에 대한 유사한 기능의 복원이 이슈 376222에서 논의되고 있습니다.
기존 잠금을 조회하고 제거하기
파일 잠금을 조회하고 제거하려면:
-
왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
-
코드 > 잠긴 파일을 선택합니다.
이 목록은 LFS 또는 GitLab UI를 통해 잠긴 모든 파일을 표시합니다.
잠금은 작성자 또는 최소 유지 관리자 역할을 가진 모든 사용자가 제거할 수 있습니다.