File Lock

Note: This feature was introduced in GitLab EE 8.9.


Note: This feature needs to have a license with the "File Lock" option enabled. If you are using Enterprise Edition but you don't see the "Lock" button, ask your GitLab administrator. Check GitLab's pricing page for more information.

GitLab gives you the ability to lock any file or directory in the repository tree reserving you the right to make changes to that file or directory. Locking only works for the default branch you have set in the project's settings (usually master).

The file locking feature is useful in situations when:

  • Multiple people are working on the same file and you won't to avoid merge conflicts.
  • Your repository contains binary files in which situation there is no easy way to tell the diff between yours and your colleagues' changes.

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

Permissions on file locking

The user that locks a file or directory is the only one that can edit and push their changes back to the repository where the locked objects are located.

Locks can be created by any person who has push access to the repository; i.e., Developer and higher level, and can be removed solely by their author and any user with Master permissions and above.

If a file is locked and you are not the author of its locked state, a pre-receive hook will reject your changes when you try to push. In the following example, a user who has no permissions on the locked .gitignore file will see the message below:

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

Similarly, when a user that is not the author of the locked state of a file accepts a merge request, an error message will appear stating that the file is locked.

Merge request error message

Locking a file or a directory

To lock a file, navigate to the repository tree under the Repository > Files tab, pick the file you want to lock and hit the "Lock" button.

Locking file

To lock an entire directory, look for the "Lock" link next to "History".

Locking directory

After you lock a file or directory, it will appear as locked in the repository view.

Repository view

Unlocking a file or a directory

To unlock a file or a directory, follow the same procedure as when you locked them. For a detailed view of every existing lock, see the next section on "Viewing and managing existing locks".

Viewing and managing existing locks

To view or manage every existing lock, navigate to the Project > Repository > Locked Files area. There, you can view all existing locks and remove the ones you have permission for.

Locked Files