What's New in SmartGit 17.1

Dark theme

Dark Theme

SmartGit supports a dark theme with operating system independent colors, which was our #1 requested feature on smartgit.userecho.com.

Changes view: Optional Compact Display

For the Changes views an option allows to hide unchanged lines, which was requested on smartgit.userecho.com. Currently, this mode causes that no syntax coloring nor editing is possible.

Optionally hide unchanged lines in Changes view.
The Changes view optionally can show line-ending changes.

Improved Line-Endings Support

The Changes view can optionally show line-ending changes (requested at smartgit.userecho.com).

SmartGit makes accidentally overwriting text files with mixed (inconsistent) line-endings harder by showing a warning dialog for the built-in File Compare, Index Editor and Conflict Solver (which only show the file content without line-endings).

Opening a file compare, index editor or conflict solver warns about mixed line-endings.
The interactive rebase allows batch processing of multiple changes.

Interactive Rebase

Former SmartGit versions already allowed to reorder or squash commits in the Journal view immediately. But if you had to do multiple changes at once, this was not perfectly handy.

Now SmartGit allows to batch process such interactive rebase operations which also has the advantage of being able to resolve conflicts (requested at smartgit.userecho.com).

The interactive rebase option to edit a commit has been made available as a dedicated Modify or Split Commit command.

Stash Improvements

The stash command has been improved:

  • support for stashing just the selected files (requested at smartgit.userecho.com),
  • optionally keep the index or the whole working copy (making the stash just a backup of the modified files),
  • the toolbar buttons has popup options for supporting a quick stash without dialog,
  • stashes can be renamed.

The option to include untracked files has been moved to the preferences.

Stashing now also allows to just save - stash and re-applying it.
Conflict Solver with easier commands for taking both changes.

Conflict Solver: Take Both

The Conflict Solver now offers commands to take changes from both sides (requested at smartgit.userecho.com).

Refresh performance improvements

The refresh performance (especially for large repositories) has been improved by roughly 50%, making SmartGit more responsive when initially scanning a repository and when invoking fast Git operations, like Stage (requested at smartgit.userecho.com).

SmartGit has DeepGit integrated, a powerful blame-log tool.

DeepGit Integration

DeepGit is a combined Blame/Log tool which helps to investigate the history of source code. It's now bundled with SmartGit and can be invoked using Query|Investigate.

Locate Gitignore Files

If you want to know why a certain ignored file is ignored or what gitignore files have influence to the selected file or repository, you now can reveal the corresponding gitignore files easily.

Easyly reveal matching gitignore files.
Reworked Find & Replace dialog

Improved Find, Find & Replace

The Find and Find & Replace dialogs have been unified being the Find dialog a part of the Find & Replace dialog. The Find feature part now allows to use regular expression and the Find Previous and Find Next operations have been made more intuitive to use.

Ignore Tracked Files

The Ignore command has been extended to also support tracked files by first removing and then ignoring them.

The Ignore command can also ignore tracked files.
File renamed in the working tree can be detected.

Rename Detection

Files renamed in the working tree (either missing and untracked, or removed and added) can be detected. The Changes view shows the file names and the file content from the correct file (Index and HEAD).

Repository Settings

The dialog has been reworked for easier display and editing of the effective Git config values. A new option for what to do when pushing submodules has been added.

The reworked repository settings dialog.
If a command fails, a dialog is shown. A tiny popup notifies about a succeeded command.

Output Popup

To not waste more screen space than necessary, you now have the option of hiding the Output view and still being notified about the command success or failure.

If a command fails or produces some warning messages, you will see the exact invoked commands and their output in a dialog, easily disposable with ESC.

In case the command succeeded or you have opted for not seeing certain warning messages you may see instead an automatically-hiding notification. Certain commands, e.g. Stage, will not show any dialog at all. To see the full output again, use Window | Output.

More Ref-Sorting Options

Usually, tags or branch names with a higher number are more important than those with a lower number. Hence, a new sorting mode has been added to take account of that.

Branches and tags can be sorted by name, numbers reversed.
The Add Tag dialog also supports searching for existing tags.

Easier Tagging

Creating a tag is easier by taking the name of an existing tag and changing it slightly, but searching in long tag lists is not necessary and more because of the Ctrl+Space completion popup.

Journal: Show More Commits

There are now 2 ways to show more commits.

Temporarily show more commits in Journal.
Click the collapsed commits.
Some toolbar buttons got popup menus (click and hold) for alternatives.

Quicker Access to Commands

A few toolbar buttons got (click and hold) popup menus for quicker access to certain commands, e.g. a quick way to fetch commits without a confirmation dialog.

The new combined Log toolbar button opens the repository log, and has a popup to show the log for the selected item. The old Log (Selection) toolbar button always working on the selection also is still available.

The combined Log toolbar button for opening the repository's or selection's log.
In the Log it is possible to start external tools on working tree files.

Log: File Tools

In the Log you now can start external tools that operate on the working tree files.

Log: Improved Drag and Drop

When dragging commits or refs in the log window, the occurring dialog has been replaced by a popup menu so you have quicker access to the options.

Dragging commits or refs in the log now shows a popup menu instead of a dialog.

Many more...

For a complete list of all changes, please refer to the Change Log.

Other Features

Conflict Solver

The Conflict Solver is a built-in 3-way-merge tool that helps you to resolve conflicts.

For better understanding the independent changes in complex conflicts you can show the base-file-changes, too.

Conflict Solver Base File
The Journal is a log-like view with the focus on the current and one auxiliary branch.

Journal

The previous "Outgoing" view has been replaced by the more powerful "Journal" view, a distraction-free, log-like view showing the last commits of the current branch, its tracked branch and one optional auxiliary branch.

The Journal allows to focus on the work with the current branch without being distracted by unrelated commits or less important commit connections. Most branch-related commands, like Merge, Cherry-Pick and Reset, can be accessed from the context menu of the Journal. As most branch-related tasks in daily work require just one specific other branch, the Journal often reduces the need to open the Log.

For a broader view of the repository's history, the full-featured Log still is available.

Spellchecker for Commit Messages

The spell-checker will check the spelling of commit messages. SmartGit ships with a US-English dictionary, but you can configure different dictionaries to be used. SmartGit supports the same dictionary file format as OpenOffice or LibreOffice. If multiple dictionaries are configured, the best matching one will be used automatically.

The spell-checker can use dictionary files that, e.g., are used by OpenOffice or LibreOffice.
For Git repositories with Gerrit remote, it became easier to push a branch to Gerrit.

Push to Gerrit

Push To Gerrit provides a quick way to push your current branch <branch> to refs/for/<branch> on your Gerrit server. This operation will only be available if SmartGit has detected that one of your remotes is actually connected to Gerrit.

JIRA Integration

When committing files, you may select open issues from Atlassian's JIRA and use it as commit message. When pushing commits, SmartGit will determine affected commits and offer to resolve them for a certain version in JIRA.

Select JIRA issues to use their subject as commit message, and mark issues as resolved on push.
Processing of GIT-LFS-managed files

Support for Git-LFS

The status of GIT-LFS-managed files is showing up.

BitBucket and Atlassian Stash

BitBucket and Atlassian Stash are now supported with pull requests and comments, similar to GitHub.

GitLab - another hosting provider.

GitLab Hosting Provider

Easily clone your GitLab repositories. You may use your gitlab.com account or your private GitLab installation.

External Tools

External Tools can be configured to work on commits. Such tools will be available, both in the Branches view and in the Log Graph. There are new variables available to ask for a file or directory name and a customizable confirmation dialog can be optionally displayed before invoking a tool.

External tools can also work on refs or commits.
SmartGit supports issue-tracker link conversion.

Issue-Linking

In contrast to SVN Git is lacking a standardized way to define how to detect issues in commit messages and convert them to links to your issue tracker. SmartGit goes ahead and supports configurations similar to SVN's bugtraq:* properties. More information you can find at github.com/mstrap/bugtraq.

Stash on Demand

If pulling or checking out a branch fails because of local modifications, the changes can be stashed away easily and applied again after the successful command execution.

Stash on demand help performing commands with local changes.