File Locking

原文:https://docs.gitlab.com/ee/user/project/file_lock.html

File Locking

Introduced in GitLab Premium 8.9.

与多个人一起使用同一文件可能会带来风险. 合并非文本文件时的冲突很难克服,将需要大量的手动工作来解决. 文件锁定可帮助您避免这些合并冲突并更好地管理二进制文件.

使用文件锁定,您可以锁定任何文件或目录,进行更改,然后将其解锁,以便团队的其他成员可以对其进行编辑.

Overview

与多个人一起使用同一文件可能会带来风险. 合并非文本文件时的冲突很难克服,将需要大量的手动工作来解决. 借助 GitLab Premium,文件锁定可防止他人(您除外)修改特定文件或整个目录,从而帮助您避免合并冲突并更好地管理二进制文件.

Use-cases

在以下情况下,文件锁定功能很有用:

  • 多个人正在同一个文件上,您要避免合并冲突.
  • 您的存储库包含二进制文件,在这种情况下,没有简单的方法来告诉您与同事的更改之间的区别.
  • 防止设计资产被覆盖.

Locked directories are locked recursively, which means that everything that lies under them is also locked.

Locking a file or a directory

注意:锁定仅适用于您在项目设置中设置的默认分支(通常是master ).

锁定文件:

  1. 导航到项目的” 存储库”>”文件” .
  2. 选择您要锁定的文件.
  3. 点击”锁定”按钮.

    Locking file

要锁定整个目录,请在”历史记录”旁边查找”锁定”链接.

锁定文件或目录后,它在存储库视图中将显示为已锁定.

Repository view

一旦锁定,对默认分支的任何合并请求将无法合并,直到文件被解锁.

Unlocking a file or a directory

要解锁文件或目录,请遵循与锁定文件或目录相同的步骤. 有关每个现有锁的详细视图,请参阅下一节”查看和管理现有锁”.

您可以解锁自己或其他人先前锁定的文件,只要您对该项目具有”维护者”或更高权限 .

Viewing and managing existing locks

要查看或管理每个现有锁,请导航至” 项目”>”存储库”>”锁定文件”区域. 在这里,您可以查看所有现有的锁,并删除您拥有权限的锁.

Permissions on file locking

锁定文件或目录的用户是唯一可以编辑并将其更改推回锁定对象所在存储库的用户.

可以对存储库进行推送访问的任何人都可以创建锁. 即开发人员和更高级别的人员,并且只能由其作者和具有维护者权限及更高权限的任何用户删除.

如果文件被锁定并且您不是其锁定状态的作者,则在尝试推送时,预接收挂钩将拒绝您的更改. 在以下示例中,对锁定的.gitignore文件没有权限的用户将看到以下消息:

  1. Counting objects: 3, done.
  2. Delta compression using up to 4 threads.
  3. Compressing objects: 100% (3/3), done.
  4. Writing objects: 100% (3/3), 320 bytes | 0 bytes/s, done.
  5. Total 3 (delta 1), reused 0 (delta 0)
  6. remote: GitLab: The path '.gitignore' is locked by Administrator
  7. To https://example.com/gitlab-org/gitlab-foss.git
  8. ! [remote rejected] master -> master (pre-receive hook declined)
  9. error: failed to push some refs to 'https://example.com/gitlab-org/gitlab-foss.git'

同样,当不是文件锁定状态作者的用户接受合并请求时,将出现一条错误消息,指出文件已锁定.

Merge request error message