Git LFS(2.4系)のロック機能は、以下の点であんまりイケてないです。
- 自分の持ってるすべてのロックを一気に外す方法がない
- 外すのに軽いシェル芸が要る
-
git lfs locks | grep [my-git-user-name] | cut -f 1 | xargs git lfs unlock
みたいな
- lock/unlockコマンドの引数にファイルを1つしか指定できない
- 例えば、
git lfs unlock A.xlsx B.xlsx
すると、エラーを吐かずにA.xlsxだけロックが外れる。
- 例えば、
- lock/unlockのコマンドに lfs が入っていて、長い。 ex)
git lfs lock A.xlsx
せめてコマンドインターフェースだけでも解決するためaliasを書いたので共有しておきます。
git.config
[alias]
lock = "!f(){ git pull ; for file in \"$@\"; do git lfs lock $file; done };f"
unlock = "!f(){ for file in \"$@\"; do git lfs unlock $file; done };f"
unlockall = "!f() { git lfs locks | grep [my-git-user-name] | cut -f 1 | while read -r file; do git lfs unlock $file; done; };f"
locks = "!f() { git lfs locks; };f"
# [my-git-user-name] は、自分のアカウント名に書き換えてください。
$ git lock A.xlsx B.xlsx #2つのファイルのlockを取る(ファイル数だけlockリクエストが走る)
$ git unlock A.xlsx B.xlsx #2つのファイルのlockを外す
$ git unlockall #自分の持っているすべてのlockを外す
$ git locks #全員のlock状況を見る
GitHub+Bashのみでテストしてあります。