Your comments

This problem has been bugging me for a long time (e.g. I'm now looking at a commit that's on 18 branches, and merged to 12). This fix works, but there's no way I'd have found this on my own.

Perhaps add it as a preference?

Good information. However, doesn't SmartGit technically have all the information it needs, since it knows the parent commits that were merged, and thus the two states of the two files being merged? So, it could open the Conflict Solver showing one parent on the left and the other parent on the right, maintaining the merged content, but without Git's underlying support.

(That said, I wouldn't be at all surprised if bypassing Git's merge system would be a complete PIA for Smart Git.)

The "Commit" button in the toolbar, equivalent to choosing the "Local/Commit..." menu item.

Second thought: instead of "Merge", have "Continue". This would act just like the "Commit" button, and would continue the process of merging.

... am I missing subtleties?

I do exactly this (manually), and it's still slow, even when using command line git.

Clearly there shouldn't be a new, intermediate dialog whenever you choose Blame or Investigate.

So, two options:

  • Have SmartGit respect the presence of a ".git-blame-ignore-revs" file at the top level (perhaps enabled by a config value)
  • Have an "Ignore this revision" context menu choice that, when chosen, recalculates the Blame or Investigate's display without the chosen revision. The next time you open that revision's context menu, there's a checkmark next to the item; choose it again and the ignoring goes away. (Where would this config be stored?)

I'd also like this. If SmartGit could unambiguously detect that a) the file system was case-insensitive, and b) this was causing problems with Git-managed files that only differ by case, then showing a "Beware!" dialog would be very helpful. (Perhaps it could be made optional if it might happen too often in specific circumstances.)

(FYI, here's an email I sent Syntevo a while back, with various performance stats for command-line git.)

I did some testing of git command-line performance, locally and networked. I found that working on shared file systems slows things down by a factor of 100 or more. A simple "git status" could take 80+ seconds (it once took almost five minutes). If that's true with the native git, then I can't really expect SmartGit to be faster.

Times to execute "git status" on the same repo (run repeatedly):

- SMB networked file system over WiFi (100BASE-T speeds): 55 seconds
(but file permissions were messed up)

- SMB networked file system over wired 1000BASE-T: 5 seconds (ditto)

- SSHFS networked file system over WiFi (100BASE-T speeds): 87 seconds
(first time took 297 seconds)

- SSHFS networked file system over wired 1000BASE-T: 17 seconds

- On local system (Recent 6-core Macbook Pro with flash storage): 0.210s

- On local system (Ubuntu w 8-core AMD processor and flash storage):
0.070s

So:

- Switching from WiFi to wired sped SMB up by a factor of 10, and SSHFS
by a factor of 6

- Switching from SSHFS to SMB sped up by factor of 0.6 to 5

- Running locally can be 1000 times faster.

I'm now using faster wired Ethernet (1000BASE-T), and things are now
tolerable. You might want to share this with the next person who
complains about slow networked functionality.

The dream would be the latter, and I understand completely.