What's New in the Git client SmartGit

What's New in SmartGit 17.1

Real Dark Theme

The dark theme has been improved further.

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.

Improved Line-Endings Support

The Changes view optionally can show line-ending changes.

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

Opening a file compare, index editor or conflict solver warns about mixed line-endings.

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).

Interactive Rebase

The interactive rebase allows batch processing of multiple changes.

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

Stashing now also allows to just save - stash and re-applying it.

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.

Conflict Solver: Take Both

Conflict Solver with easier commands for taking both changes.

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).

DeepGit Integration

DeepGit

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

Easyly reveal matching 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.

Improved Find, Find & Replace

Reworked Find & Replace dialog

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 can also ignore tracked files.

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

Rename Detection

File renamed in the working tree can be detected.

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 reworked repository settings dialog.

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.

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, a dialog is shown.

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.

A tiny popup notifies about a succeeded command.

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

Branches and tags can be sorted by name, numbers reversed.

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.

Easier Tagging

The Add Tag dialog also supports searching for existing tags.

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.

Quicker Access to Commands

Some toolbar buttons got popup menus (click and hold) for alternatives.

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.

Log: File Tools

In the Log it is possible to start external tools on working tree files.

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

Log: Improved Drag and Drop

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

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.

Many more...

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

Other Features

Conflict Solver

Conflict Solver Base File

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.

Journal

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

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 can use dictionary files that, e.g., are used by OpenOffice or LibreOffice.

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.

Push to Gerrit

For Git repositories with Gerrit remote, it became easier to push a branch 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

Select JIRA issues to use their subject as commit message, and mark issues as resolved on push.

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.

Support for Git-LFS

Processing of GIT-LFS-managed files

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

GitHub and BitBucket OAuth support

***********************

For GitHub and BitBucket, the OAuth web flow has been implemented: you won't have to give your passwords to SmartGit anymore but instead use access tokens which have a tailored set of permissions.

The GitHub repository credentials management has been simplified and based upon these access tokens, too.

BitBucket and Atlassian Stash

Mercurial: the number of unpushed (draft) commits is shown.

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

GitLab Hosting Provider

GitLab - another hosting provider.

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

External Tools are more powerful

External tools can also work on refs or commits.

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.

Distributed Reviews

pull-request

SmartGit 6 comes with a built-in code reviewing system (read more), which supports pull requests and comments, similar to GitHub.

This feature is a paid add-on on top of the commercial license.

Markdown Support

SmartGit 6 with markdown support for GitHub integration and SmartReview

Distributed Reviews and the GitHub integration provide support for markdown syntax (e.g. bold, italic styling, bullet lists).

GitHub: Pull Requests and Comments

pull-request

If you are using GitHub or have an own GitHub Enterprise instance, you can use Pull Requests and Comments features from inside SmartGit. Instead of leaving the responsibility to merge fixes or new features to all developers, they can send a Pull Request to the system integrator. The system integrator then will fetch the pull request commits, review them and either merge or reject the pull request.

comment feature

The Comments feature comes in handy, because it allows to add comments to lines of committed files, e.g. as feed-back to a pull request.

github configuration

SmartGit now supports 2-factor authentication to connect to the GitHub server and relies on API tokens instead of passwords. This improves security, because you have to share the GitHub account password with SmartGit only once, or you can even manually generate the token from the web-fronted. GitHub Enterprise instances are well-supported now and you can have multiple accounts, for github.com and for Enterprise instances at the same time.

Issue-Linking

SmartGit supports issue-tracker link conversion.

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.

Git-Flow

git-flow

Git-Flow is a high-level command set wrapping low-level Git commands to support a successful branching model. For the user it significantly reduces the necessary workflow steps and hence reduces the risk of incorrect command usage by less-experienced users.

SmartGit with a light-weight Git-Flow support.

The standard Git-Flow model may be too heavyweight and inflexible for some projects. SmartGit supports a light-weight Git-Flow which only makes use of feature branches.

Syntax Coloring and Quick Line Staging

stage-hunk

The built-in file editors (Compare, Conflict Solver and Index Editor) now support syntax coloring based on the file name. The colors and the filename-to-language mappings can be configured in the preferences.

SmartGit 4.5 makes staging (unstaging) hunks or inner-line changes even simpler and directly available in the Changes tool window.

Blame

blame

The Blame has been improved in various areas: more compact information, display of subsequent and previous content of a single line, hyperlink navigation, better merge commit resolution and performance.

Stash on Demand

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.