Git LFS lock in GitLab prevents pushes of new files when unrelated files are locked by other users
Summary
The problem is that pushes of new files to the GitLab repo fail when other (unrelated) files are locked by other users.
Steps to reproduce
- Created a GitLab project "LfsLockIssue", enable git LFS support, with members "user1" and "user2"
- Defined files *.txt lockable with
git lfs track "*.txt" --lockable
- user1 creates file test1.txt with echo "test1">test1.txt, locks, commits and pushes test1.txt (but does not unlock it). No issues there
- user2 creates file test2.txt with echo "test2">test2.txt, locks, commits, pulls text1.txt and pushes test2.txt
Then despite no modifications were made to test1.txt, the push fails with:
remote: GitLab: The path 'test1.txt' is locked in Git LFS by user1
To gitlab.com:ndelorme/LfsLockIssue.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@gitlab.com:ndelorme/LfsLockIssue.git'
Example Project
This project was created to illustrate the issue:
https://gitlab.com/ndelorme/LfsLockIssue
What is the current bug behavior?
Push fails because of some LFS locks by other users than myself on files unrelated to the current pushed files.
It seems that once the file exists on the gitlab remote then the issue disappears and every user can modify/push freely even when locks on other files exist.
What is the expected correct behavior?
Only pushes attempting to change files locked by other users should fail.
Relevant logs and/or screenshots
See above.
Output of checks
This bug happens on GitLab.com
Locally using git-lfs version 2.4.0, git version 2.14.1.
Thanks. Nicolas.
Implementation
-
Introduce find_changed_paths with merge_commit_... (!123501 - merged) -
Update Gitlab::Git::Repository#find_changed_pat... (!123548 - merged) -
Do not diff paths changed in merge commits (!123947 - merged) -
...
gitlab-ce~2278648