Posted at

Git LFS lockを使うためのエイリアス メモ

More than 1 year has passed since last update.

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のみでテストしてあります。