GUI for Git lfs

smartgit 1 year ago • updated by Derrick Southerland 2 months ago 8

Git lfs is a great, additional feature when using Git for situations, where blobs need to versioned, too. I would love to see a nice GUI integration of Git "large file storage".


I have not used git lfs a lot but the following features would help me:

- git lfs initialization via GUI

- some icon / status text confirming that git lfs is used

- some icon / field showing files handled by git lfs in the Files view


And beyond Git LFS 1.x support : Add support for Git LFS 2.0.0 File locking mechanism

Newly released Git LFS 2.0.0 comme with centralized "File locking".

  • For now it is only supported by Github.com, but I expect Gitlab and Bitbucket to follow sooner or latter.
  • It is only working with a centralized repository, that is when sharing a repository in a Github Organization, or when using a dedicated "on premise" server (using Gitlab there).
  1. It would be great to add support for the new "git lfs lock", "git lfs unlock" and "git lfs locks" commands.
  2. This would require at least a new status icon (Lock) but probably two (Lock by other), a row with the name of the user locking the file,

Note that in my experience, the command line is currently a bit confusing (HTTPS seems to work reliably only when basic authentication got through an explicit https://username@gitlhub.com URL).


One important feature I've just discovered: Git LFS File Locking mechanism is totally orthogonal/independent to the "Large File" feature: that is, you can lock any file of the repo (sources, config) not only big binary files stored separatly by LFS server.

This is huge, as it means that you can use Git LFS 2.x to lock files without using LFS for storing file, thus keeping every Git clone "complete".


1. Git LFS is now bundled and installed by default since Git for Windows 2.12.1 (2017/03/21)

2. Git LFS is now working under Windows 10 version 1703 (Creators Update) in the "Bash" Windows Subsystem for Linux (this does not affect SmartGit, but is just a way to say that Git LFS usage can grow)

Please also default to the most efficient clone/checkout operations when using LFS.

The smudge filter is incredibly slow. It's best to skip the smudge filter when doing a clone/checkout and then issue a 'git lfs pull' afterward.

The command 'git lfs clone' is already implemented to do this in one step, but no 'git lfs checkout' equivalent exists, so you have to specify to skip the smudge on checkout.

See https://developer.atlassian.com/blog/2016/04/git-lfs-12-clone-faster/ for more info.

This feature would help us a lot. smartgit does not work well with lfs, it's too slow.

Can we make git lfs clone as the default command for pull in smartgit?


Please don't integrate `git lfs clone`. Steve Streeting and I added this workaround a while back but it is deprecated now: 

In Git 2.15 I added a new way to smudge files in parallel. This makes the default `git clone` command as fast (and sometimes faster) than `git lfs clone`. This is supported by Git LFS 2.3+

Make sure you run at least Git 2.15 and Git LFS 2.3. Then use the standard Git commands for best performance :-)


Please add an option to the custom "Diff Tools" to enable the smudge filter for the diff'ed files. That would be necessary if you want to compare the content of the Git LFS object (e.g. image files). This explanation is very brief. Please ping me for more details: https://twitter.com/kit3bus