What's New in SmartGit 6.5

External Tools are more powerful

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.

Log file/content filters

The Log provides two new filters: searching for touched file names and searching for modified file content in a commit. The responsiveness during filter execution has been improved.

Log: optionally search commits for file names or file contents.

Improved memory consumption

Various modules have been optimized to consume less memory, especially for large repositories. SmartGit is now using a more powerful garbage collector which will release unused memory back to the system. This allows SmartGit to start with a higher maximum memory limit, resulting in less out-of-memory-errors.

auto-update across major versions

SmartGit's auto-update mechanism now provides updating the installation source. This will allow you to easily upgrade to new major versions without requiring a new installation. You can also configure to keep your current installation up-to-date in the Preferences.

SmartGit can update its installation.

Distributed Reviews: better handling of pull requests

For a Distributed Review pull request, the Log will now display only its most recent head. For the selected pull request, obsolete heads can be toggled from the Details view.

After Integrating a pull request, it will be put into the newly introduced closed state. Closed pull requests are not visible by default, but can be toggled by Review|Show Closed Pull Requests.

Mercurial: backout

The Mercurial part of SmartGit now provides the backout command.

Mercurial: backout (AKA reverse-merge) commits.

Create/Apply Patch and other tools

Git format-patch and apply-patch have been added as external tool. Fast-Forward Merge allows you to quickly set a tracking branch to its tracked branch. Merge Directly To is a handy tool from Ram Rachum to quickly push changes to a branch, without checking out.

Fine-Tuned Repository Management

The repository management which had been completely reworked in SmartGit 6 had been further improved by user feedback.

Many more...

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

What's New in SmartGit 6

Completely Reworked Repository Management

SmartGit 6 simplifies the repository management by getting rid of "projects" and just knows about repositories. A repository has a name, can be marked as favorite and can be arranged in top-level groups. Each group is sorted by the repository or group names: favorite repositories before groups before non-favorite repositories.

SmartGit shows information about local changes, pushable commits (outgoing changes) and mergable commits (incoming changes) - even for closed repositories.

SmartGit 6 with completely reworked repository management

With drag-and-drop repositories quickly can be added or moved to other groups (by dropping on a group directly or a repository in the target group).

A double-click opens the repository (closing the previously opened one). To open all repositories in a group, right-click the group and select Open. To open multiple repositories, select them, right-click and select Open. To open a repository in a separate window, right-click and select Open in New Window. When closing SmartGit while repositories are open, these repositories will be reopened upon restart. Opening a new window either reopens the open repositories from a previously closed window or shows a list of recently-used repositories.

Common commands like Pull (Fetch), Log or external tools can be invoked on closed repositories. Log also works on bare repositories.

On the first start, common locations are scanned automatically for existing repositories. Additionally, specified directories can be searched recursively for existing repositories.

Background Fetch and Local Change Detection

Favorite repositories can be automatically scanned in background (when idle) for local changes, quickly polled for remote changes, or remote changes can be fetched. This way you quickly get notified about which repository became modified locally or remotely.

SmartGit can detect and fetch remote changes

Distributed Reviews

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

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

SmartGit 6 with markdown support for GitHub integration and SmartReview

Git-Flow Light

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

SmartGit 6 with a light-weight Git-Flow support

Improved Submodule Handling

The Files view now also shows submodules, so it's not necessary anymore to resort to the Directories tree to invoke submodule operations. Still, submodules also show up in the Directories tree what helps to avoid the question whether an invoked operation should work on the submodule gitlink of the parent repository or on the submodule repository itself.

SmartGit 6 with simplified submodules handling

Improved Compare Behavior

The navigation to previous or next changes has been improved to show as much as possible from the changed blocks.

Trailing whitespaces and changes in whitespaces can be highlighted optionally. The current line can be highlighted in a different background color, optionally as well.

SmartGit 6 can highlight modified or trailing whitespaces

Improved Commands

Push

There are two new options: one to push all tags automatically and another one to automatically set up tracking for new branches.

SmartGit 6 can push all tags automatically

Delete Branch

When deleting a local branch which tracks another branch, deleting the remote branch (from the remote) is easier now.

Interactive Rebase

The interactive rebase commands in the Outgoing view now can automatically stash local modifications and restore them after the rebase.

Reset

Reset warns now if local or index changes would be overwritten.

SmartGit 6 warns before a reset overwrites changes

Many more...

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

What's New in SmartGit 5

GitHub: Pull Requests and Comments

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.

pull-request

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.

comment feature

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.

github configuration

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.

issue-tracker link conversion

Improved Log

The Log now allows to pull and push. To visually distinguish unpushed commits, they are shown with orange color and are connected to their parents with thin lines. Tracking branches show how much commits they are ahead (develop 2>) or behind (develop <4) their tracked branch.

Several commands — e.g. to move the head (checkout), reset current branch, move arbitrary refs, cherry-pick or rebase a commit range — now can be performed with drag-and-drop.

unpushed commits with thin lines

Blame (Mercurial)

SmartGit  now also supports a powerful Blame for Mercurial with navigation in the line history.

mercurial blame

Shelves (Mercurial)

Git has stashes and Mercurial has shelves. SmartGit now also adds support for Mercurial shelves, so you can save local changes quickly to get a clean repository and apply the changes again later.

mercurial shelve

Miscellaneous

For repositories with multiple remotes one now can select on what remote Git-Flow should operate (gitflow.origin).

For those who want to write perfect Git commit messages, SmartGit now optionally shows line length guides at 50/72 characters.

commit message line length guide at 50 or 72 characters

Different files might require different merge tools (e.g. for text or special binary files). As for file comparators, SmartGit now allows to configure different Conflict Solvers depending on the file name.

Sometimes it makes sense to ignore modified, but versioned files. Git allows to mark files with the assume-unchanged flag. SmartGit allows to toggle this flag and you can choose whether to show or hide these files.

What's New in SmartGit 4.6

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.

git-flow

Increased Rebase Performance

The performance of rebase operations, especially on Windows systems, has been significantly improved (18x faster on a Windows XP test machine).

SmartGit-URL Support

SmartGit supports an own URI: smartgit://cloneRepo/<URL>. This allows web applications like gitblit.org to easily trigger a clone in SmartGit.

Safe Forced Push

To reducing the risk of overwriting changes using a forced-push, a safety check is performed ensuring that the local 'remote' branch is identical with the one in the remote repository. In other words: the forced-push is rejected if someone else has pushed something to the same branch. You have to perform a fetch first (and get the other user's changes) to successfully perform a forced-push.

safe-forced-push

What's New in SmartGit 4.5

Syntax Coloring and Quick Line Staging

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.

stage-hunk

External Tools

The existing file and directory tools have been unified. Tools now support own menu items, shortcuts and can be executed on selections of multiple files.

tools configuration tools menu

Automatic Update

To reduce the steps necessary to use the latest version, SmartGit 4.5 supports auto-updating. If a new SmartGit version is released, SmartGit will download it in the background and use it when started the next time. No manual installation or administrative access rights are required.

auto-update notification

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.

blame

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

Quicker Fetch

The Pull dialog now has a separate button to fetch only (without merging or rebasing).

fetch-only

What's New in SmartGit 4

Improved Mercurial Support

Support for following feature has been added: bookmarks, cherry-pick, rebase, phases and strip.

If you need credentials for accessing your http(s) repository, SmartGit can remember them for you.

Major commands have been added to the Log to execute them directly from there. The Log now also shows the history of renamed or moved files.

From the Mercurial Log commands now also can be invoked directly.

Interactive Rebase

Before pushing, you can cleanup your commits visually (except of merge commits): reorder commits by using drag and drop, join adjacent commits or edit commit messages.

Use drag-and-drop to reorder unpushed commits.

Branch-, Stash-, Remote-Handling Simplified

The new Branches tool window unifies a lot of functionality at one place. Simply switch branches by double-click, see pushable (red) and fetched (green) commits, push certains branches or tags, manage remotes or apply and drop stashes.

Double-click to switch branches, see pushable and mergable branches, invoke commands, edit remotes, ...

Full SVN-Property Support

SmartGit 4 provides full SVN-property support, so you can merge easily all changes. If you have cloned the SVN repository using a previous SmartGit version, you will see following warning:

SmartGit SVN loss-less merge.

Move to Trash

When deleting files, you now can delete to the trash.

When deleting, optionally move to the trash.

Polished User Interface

The Reveal in Finder feature has been enhanced to also work on Windows (Explorer) and Linux (Nautilus).

With SmartGit 4 you can specify on branch-level whether Pull should perform a Rebase or Merge.

Configure on branch-level whether to merge or rebase when pulling.

The hosting provider support has been added to Add Remote, too, to make importing a project easier.

When cloning, you may opt to just clone one particular branch.

Either clone the full repository or just the branch you need.