Your comments
I think SmartGit would make sure that trees for all commits are present. Otherwise too much code might be affected by "missing objects" problems.
If a blob is missing (eg, due to cloning with --filter=blob:none), the Changes view will currently display an error message. All we have to do is do a "checkout" of the relevant commit (from the GUI) and git will fetch the relevant blobs and then SmartGit will display the diff properly (the checkout will respect any sparse-checkout filters you've set up, so it's not too expensive).
I would not fetch the entire commit but instead just fetch the missing blobs (git fetch ... <blobid>). The blobs will only be required for the Changes view, so it will be only a few (or just a single one) out of every selected commit. Fetching these blobs should happen automatically, at least up to a certain size: if the user clicks through the Graph and investigates changes for certain commits, this should work smoothly.
SmartGit 20.2 preview build 16062 now also includes Remote - Subtree - Add. Also, the internal detection of subtree commits has been improved.
Regarding the dark mode problem, we are not aware of this. Can you please contact smartgit@syntevo.com with more details?
Please give 20.2 build 16058 a try. Get it from:
https://www.syntevo.com/smartgit/preview/
then invoke Help|Check for Latest Build.
Since a while you can configure Low-Level Property "github.pullRequestCommentPageLimit" which is now allowed to be "0".
You can configure "rebase.autostash":
https://git-scm.com/docs/git-rebase#Documentation/git-rebase.txt-rebaseautoStash
It works even better than SmartGit's own auto-stashing because it will be able to apply the stash even if rebase had been stopped and continued due to conflicts.
Duplicate of https://smartgit.userecho.com/communities/1/topics/681-
Resolved in DeepGit 4, SmartGit 20.1.
In 20.2 Preview, build 16041 there is now Low-Level Property "log.graph.filter.persistFileNameOption".
Because "File Name" and "Content" are so expensive, they are reset. Otherwise it may happen too easily that you forget about this option being set (it's more obvious now, but not too obvious, especially not for new users), invoke for a filter and wait much longer than necessary to get your results. Assumption here is that filtering for the file name (and especially content) is a rare event. I think for "File Name" we could a Low-Level Property to persist, though.
Customer support service by UserEcho
> > I would not fetch the entire commit but instead just fetch the missing blobs (git fetch ... <blobid>)
>
> Even better if you can do that. I think you would want to fetch all blobs relating to that commit though (ie, all changed files in that commit) rather than just for the selected file. Reason being that this would allow the Compare view to track content that movesacross files (SG-12887).
I agree, that sounds reasonable. Even without SG-12887, chances are good that if a user investigates a commit, he might check contents of other files of this commit as well. And as the "round trip" overhead of fetching a single blob is usually tremendous compared to the blob data itself, we should better fetch all blobs at once (given they are below a certain threshold).
> I think don't fetch when just clicking in the Log (because as a user I might just want to see what files changed, not the actual diffs), but if performance is good enough, then agree with automatic fetching when selecting files for comparison. (But if auto fetching makes things unresponsive, then this will be the opposite of a smooth experience! So I guess just need to play around and see...)
The fetch will be triggered exactly once the Changes view tries to access blob data which in turn is triggered by the Files view selection which is triggered by the Graph selection. If you are working with partial clones and you are not interested in diffs at all, the best solution will be to close the Changes view in the Window|Main Perspective. This holds true already now if you want to prevent SmartGit from accessing Git-LFS blobs.