Git-LFS
SmartGit provides the common Git-LFS operations, provided that Git-LFS has been installed on your system and it’s configured in your Git config files, so it will work from command line.
Implementing low-level commands
SmartGit implements low-level Git-LFS commands and provides them in the Local|LFS menu. There is almost a 1-1 correspondence between SmartGit commands and Git-LFS command line.
Example: setting up and adding files to Git-LFS
We are following the Git-LFS tutorial to add a file to Git-LFS:
git lfs install: invoke Local|LFS|Install
git lfs track <file>: select an untracked file in SmartGit’s Files view and invoke Local|LFS|Track; SmartGit suggests a matching pattern for the selected file which you can adjust if necessary
git add .gitattributes: right click.gitattributesand invoke Add
git add <file>: right click the file and invoke Add
git commit: invoke Commit
Note
If you are encountering unexpected errors when invoking Lock or Unlock on Window, this may be caused by a strange behavior of current Git-LFS versions (2.5) which will fail when invoked with a working directory with wrong case. To workaround the problem, make sure that the path in
repositories.xmlhas correct case, especially the drive letter must be uppercase, for example:<obj type="@Repository" id="..."> <prop key="name" type="String" value="smartgit"/> <prop key="favorite" type="boolean" value="true"/> <prop key="git" type="boolean" value="true"/> <prop key="path" type="String" value="D:\\smartgit"/> <prop key="expanded" type="boolean" value="false"/> </obj>
Displaying locks
To see Git-LFS lock states in the Files views (both Log and Working
tree window), Git-LFS locks verification must be enabled for your
repositories. A corresponding .git/config might look like:
[lfs "https://server/repo.git/info/lfs"]
    ...
    locksVerify = true
Furthermore, you have to enable property pull.queryRemoteLfsLocks in
the Preferences, section Low-level Properties. This will make
SmartGit invoke additional commands:
- git lfs locks --local
- git lfs locks --remote
after every fetch for which the output will be written to:
- ./git/smartgit/lfs-locks-local
- ./git/smartgit/lfs-locks-remote
Once these files are present, the Name column icon will start denoting the locking state for LFS files.
To make SmartGit also display which files are lockable, set low-level
property status.evaluateLfsLockableState. This will evaluate the
Git-LFS lockable attribute for every file during the refresh.
Example
The following screenshot shows how this display will look like:
- fileis normal file to which no LFS lock information applies
- hugeis locked by someone else
- huge2is locked by yourself
- huge3is lockable (configured in- .gitattributes)

Note
In the Log window, lock states will only be displayed for the Working Tree node.