SmartGit is a Git client with support for GitHub



  -  120 MB  -  Freeware
  • Latest Version

    SmartGit 23.1.3 LATEST

  • Review by

    Daniel Leblanc

  • Operating System

    Windows 7 / Windows 7 64 / Windows 8 / Windows 8 64 / Windows 10 / Windows 10 64

  • User Rating

    Click to vote
  • Author / Product

    SyntEvo GmbH / External Link

  • Filename

SmartGit is a Git client for Windows PC, Mac, and Linux. It is free for non-commercial use, provides graphical access to Git repositories, and can access Subversion repositories. For trivial Pull, Commit, and Push you will find simpler alternatives than this tool. Purchase your license once and use it on as many machines and operating systems you like. No need to install and configure additional tools. SmartGit comes with special integrations for GitHub, BitBucket, and Atlassian Stash to create and resolve Pull Requests and Review Comments. Of course, you can use SmartGit with your own repositories or other hosting providers (e.g. GitLab).

Features and Highlights
  • Virtually all local working tree operations
  • Status, diff, log
  • Push, pull, fetch (for all protocols)
  • Tag and branch management
  • Merge, cherry-pick, rebase, revert, rebase
  • Stash management
  • Remotes management
  • Submodule support
  • Advanced SVN support (use Smart Git as SVN client)
Also Available: Download SmartGit for Mac and SmartGit Portable

  • SmartGit 23.1.3 Screenshots

    The images below have been resized. Click on them to view the screenshots in full size.

    SmartGit 23.1.3 Screenshot 1
  • SmartGit 23.1.3 Screenshot 2
  • SmartGit 23.1.3 Screenshot 3
  • SmartGit 23.1.3 Screenshot 4
  • SmartGit 23.1.3 Screenshot 5

What's new in this version:

SmartGit 23.1.3
- config: possible internal error if config file ends after subsection name
- possible "ghost" modified state related to invalid "text=<value>" in .gitattributes

- Simple hosting providers: Domain input field is missing

- default dark theme: assertion showing comment
- table columns too narrow by default

- env-var parser fails if `pwsh` is configured
- Reveal in Finder: always shows an empty output dialog

- WSL: if appending Windows path is disabled, browser windows can't be opened

Other Noteworthy Changes:
- updated Chinese translation

company configuration:
- allow to have fixed Git executable version by configuring `executable.requiredExactVersion`

on-premise license server:
- About dialog: show details about on-premise license server
- Setup: improve warning message in case of rejected authorization (LDAP)
- Setup/Register: prevent requesting license if Git email address is not configured

Working Tree window:
- Show Changes: introduce low-level property `showChanges.askForIndexAndWtModifiedFiles` to show selection dialog for wt-index-modified files

- Refresh (macOS): added low-level property `core.status.ignoreGenericFileSystemExceptionOnMacOs` to work around "Operation not permitted" error caused by inaccessible directories

SmartGit 23.1.2
- by-author-coloring is always dark, even with light theme

Branches view:
- toggling grouping option in hamburger menu did not trigger refresh

Commit view:
- Rewrap (Windows): introduced additional lines/spaces

File Log:
- possible internal error in case of missing objects

Hosting Providers:
- Azure: client certificates did not work
- Bitbucket:
- own comments may not be editable
- Merge to Local did not work for SSH repositories
- possible dead lock opening a project for some hosting providers, e.g. BitBucket
- GitHub: possible error "Object 'id' not found" related to pull request reviewer assignments
- GitLab: possible internal error for redirected repositories

- for worktree with mismatch between Git admin pointers, the more unexpected repo will be opened
- for worktree with non-existing Git admin pointer, opening fails

- possible internal error if config file ends with subsection quote (`[remote "`)
- possible internal error for large commit dates, e.g. year 2286
- inefficient refreshing for large repositories with many submodules
- low-level property `json.graphQL.ignoreNullArrayElements` did not work properly

Log window:
- all refs should be displayed by default (regression since 22.1)

Standard window:
- tabs: internal error related to (unintentional) tab dragging while a dialog occurs
- Delete/Move to Trash (macOS): did not refresh correctly after removing `.git` file

SmartGit 23.1.1
- GitHub email address confirmation dialog: selecting the *Always use default email address* radio button wrote empty email address to `.git/config`
- Azure DevOps: OAuth-authentication for repository was broken (unless Git config "useHttpPath" was set)
- Investigate: under certain unclear conditions an internal error could occur when closing the Investigate window

Standard window:
- Commit: should not allow to create empty commit even if repository is empty
- Linux: several problems with forced light theme on dark system theme
- the background color of the Std, Directories table is dark gray instead of light gray
- the caret in text fields is not visible
- the preferences tree uses light foreground on light background for the selected node
- macOS: click-dragging a table item might cause an internal error under unclear conditions

Other Noteworthy Changes:
- Branches view:
- when using `branchBrowser.showClassicAheadBehindNumbers`, colors are used (as in before SmartGit 22.1)
- Log: added low-level property `core.remote.configNamesToIgnoreForUrlLessRemotes` to hide incomplete remotes (that are shown by `git status`)
- some i18n fixes

SmartGit 23.1.0
- Refresh: possible internal error while concurrently adding LFS objects

SmartGit 22.1.7
- 2nd SmartGit instance crashes with FileSystemException
- Rebase, Step: should not be available in non-step mode

- possible problems with custom "filter..process" (long running filter process)
- -may not show modifications for files containing "eol" attribute without "text" attribute
- Linux: evaluation reminder dialog might be hidden behind main window making the impression that SmartGit hangs

Other Noteworthy Changes:
- Graph layout: reduced memory consumption
- added low-level properties github.userQuery.* to fine-tune/debug query-sizes

SmartGit 22.1.6
- Changes view, Split Index/WT files: even if changes.preservePositionWhenSwitchingBetweenWtIndexHead is set to false, selecting the index or working tree of the same file did not select the first diff
- Commit Message, Rewrap: possible internal error
- Distributed Reviews: pull requests may not be properly updated to merge base
- GitHub Enterprise: possible internal errror for "Generate Token" in preferences
- JNA: still created temp directories (regression since 21.2)

- refreshing fails when using negative respecs (^)
- LFS (Windows): possible internal error for case-changed directories
- SSHJ: possible internal error for unsupported private key format
- possible internal error killing a (Git) child process

- view tabs (Log, WT window): a too-fast drag-and-drop continued to show the drag-reject cursor

Log window:
- GitHub: possible too large amount of REST calls

Working Tree window:
- if in Setup wizard the Standard window is selected as default, neither the Commit toolbar button nor the Commit view were visible
- Refresh: possible performance problems for .git/index file without checksum

Log window:
- Graph: Varying Coloring uses now more distinct colors
- reactive license.serverPing.url

SmartGit 22.1.5
- Kill hanging process: possible internal error

- Refresh:
- possible internal error in case of corrupt .git/index file
- possible internal error related to bad branch..merge entry in .git/config
- problem reading packed-refs

- Standard window: possible internal error when filtering

Other Noteworthy Changes:
- Log: remove notification "would you like the Log as default window?"
- Preferences: after changing the Startup window option, show restart notification
- Setup wizard: let the user confirm the Standard window

SmartGit 22.1.4
- Background scan: fixed memory leak if Detect Local Changes is disabled
- Changes view: Resolve may fail with "Input length = ..." error depending on the used encodings
- Fetch More: internal error when trying to fetch non-branch, like Gerrit refs/changes/01/000002/3

Standard window:
- Files: possible incorrect original path shown for renamed file
- Filter: various regex-selectors, e.g. .* were non-functional
- GitHub: possible internal error during refresh
- Rebase may silently do nothing

- Linux bundle: old .svg file was bundled

Other Noteworthy Changes:
- Tools: the obsolete tool is removed automatically, even if upgraded from older SmartGit versions)

SmartGit 22.1.3
Standard window:
- Start Feature: could reset diverged local branch (not ahead or behind) onto remote branch (possible loss of commit)
- Graph: internal error when selecting virtual and one other commit

Log window:
- Changes: clicking submodule commit did not reveal commit reliably

Hosting providers:
- Azure: for multiple configured hosting providers (accounts), refreshing only worked randomly
- GitHub: possible "Object author not found as parent of PullRequest" for pull requests of non-existing users

- at line end of config file was erroneously treated as line continuaton
- could break in case of inaccessible directory or file
- Setup wizard: possible internal error on Finish (related to proxy configuration)

Other Noteworthy Changes:
- Azure DevOps: added low-level property "azure.accountMatchHonorOrganization"
- Rebase: by default rejects Rebase Interactive when trying to rebase onto a commit of the HEAD's history (low-level property "rebase.invokeInteractiveForBranchHistory")

Log window:
- Changes: font to display comments might be too small to read: added low-level property "changesView.comment.fontSize" to configure the size

SmartGit 22.1.2
- Annotate: possible internal error
- Background scan: fixed memory leak
- Bitbucket: failed for pull requests with invalid refs (silently ignores them now)
- GitHub integration: possible error "Object 'requestReviewer' not found as parent of 'nodes'"

- possible error "is a directory" when opening a repository with symlinks in .git/refs
- possible error "Bad entry" for rn continuation in Git config file
- Spell checker: possible internal error when accepting fix while the message was cleared automatically after a successful commit
- Syntax coloring, PHP: incorrect end of string detection

- Changes View/Compare: non-US-ASCII-related problems; restored SmartGit 21.2 behavior
- Investigate toolbar icon had wrong background
- Standard window, Commit: line length guide ignored left margin

- Various operations: possible error "Inappropriate ioctl for device" when writing .git/config

SmartGit 22.1.1
Fetch: possible internal error
- Git config file: possible corruption when writing, especially for lines after a comment line

- Subdirectory Log: internal error double-clicking a commit
- Graph: possible internal error when filtering with set low-level property "log.graph.topoFilter.alwaysIncludeContainingMerges"

- Push To: did not configure tracking even if options were set to do so
- Preferences: certain .gitconfig options may become confused if not stored with canonical case in .gitconfig

Standard window:
- internal error cloning a repository into a directory which was already open and had been deleted outside SmartGit
- Local Files, Push toolbar buttons: count badge might be outside the button depending on the screen zoom level

- Investigate: i18n problems
- macOS: window-less menu bar was not translated

SmartGit 22.1.0
- File Log: hitting Del in the Branches view caused internal error
- JIRA: many recurring dialogs after cancelling SSL client certificate

SmartGit 21.2.4
- Azure DevOps: integration was not applicable for ssh://[email protected]:22/project/_git/application URLs

Changes view:
- possible internal error selecting certain images (depending on color model)
- possible internal error when applying/reverting selection containing removal of empty line

Git-Flow (external): finish feature/hotfix/release branches containing '/' did not work
- Log:
- Graph: possible internal error for partial clones when filtering for file name or content

- BitBucket Server: possible internal error if pull request has been created from tag
- squashed subtrees were not detected

- rebooting while running might lose newly entered hosting provider credentials
- Refresh (working tree): possible internal error if .git/index has null-checksum

Other Noteworthy Changes:
- added low level property refresh.checkGitAdminOutsideOfModel

SmartGit 21.2.3
- Changes view
- internal error related "Split leading/trailing lines" option
- Copy without selection: copies 1 char too much resulting in crash for last line
- for Unified view, Goto Next Change may remain at existing change
- error "failed to read file" for missing files if "core.autocrlf=input" is configured
- Files (Log and WT): State and Working Tree State columns should denote rename sources as "missing", not "unchanged"
- GitLab: error "The authorization server does not support this response type" when trying to generate a new token
- Log: possible internal error when filter for modified content
- Pull: Git config "pull.rebase=merges" should be honored
- Pull/others: submodule..update=none should be honored
- Refresh (WT): "filter" may not be applied if listed after "text" or "eol" in .gitattributes

SmartGit 21.2.2
- Changes view: split-off block may miss background color
- Cherry-pick: possible internal error related to subtrees
- Conflict Solver: for LFS conflicts, left and right will show wrong contents (of base file)
- Graph (macOS): (x refs) box with dark background on dark system with light SmartGit theme
- Pull: possible internal error when trying to initialize SVN submodule
- Refresh (Windows): internal error when trying to open repository located at special directory, like "C:UsersaccountMy Documents"
- added low-level property "gitlab.additionalRequestHeaders"

SmartGit 21.2.1
Changes view:
- unexpected "Error reading file, Details: cancelled" for Git-LFS file which exceed the size threshold
- possible internal error clicking "Force Compare"
- Commit/Stash: possible error "unknown option `pathspec-from-file=-'" when using Git 2.25
- External tools: ${commit2} was marked incorrectly as optional
- Gravatar: fixed assertion for incorrectly sized images

- Graph: memory leak of core objects after invoking popup menu
- File log: internal error if deleting and re-cloning repository while file log is open

- possible internal error "Unknown chunk ID ..."
- internal error trying to open a repository which is actually a file
- macOS bundle with invalid version information

SmartGit 21.2.0
- Changes view: hitting Refresh did not reload file content

SmartGit 21.1.3
- Changes View:
- Apply was available when starting within an inner-line change
- possible internal error when reverting a black and changing the file once again while the confirmation dialog is showing

- Azure DevOps: should allow multiple configurations for different server URLs
- Journal: possible false-positive pushed commits for local, untracked branches
- command line tool hang until SmartGit was closed; added a workaround

SmartGit 21.1.2
- Azure DevOps: possible "Could not parse date" error on pull request refresh

- Branches view:
- refresh may change selection from remote to local tracking branch
- tag message did not show up for grouped tags
- toggling remote ref might select local ref

- Changes view:
- if saving fails, error banner hides too quickly
- horizontal scrolling did not always update reliably
- possible assertion on Apply
- staging hunks for untracked-missing renamed file fails with "Failed to write file" error
- Working Tree window: did not reliably refresh after failed save
- Ignore: showed scary warning about discarding changes for untracked file

- Log:
- Files (working tree): ignored removed file which is locally existing does not show up unless View Ignored Files is selected
- Refresh (Working Tree): automatic refresh did not clean up files after ignoring directory in non-root .gitignore
- Refresh: possible internal error for commits with commit times > 2038

Other Noteworthy Changes:
- UTF8 detection now scans full file instead of just the first 64kB
- GitHub: shows reasonable warning in case of organization access restrictions
- low-level property "core.tree.filter.backwardCompatibilityWithNonUnicodeGitOnWindows"
- Table controls: if low-level property table.scrollToSelection is set to false, ignore the selection's visibility

SmartGit 21.1.1
- BitBucket: possible internal error on refresh

- Changes pane:
- maximum size limit was not applied to images possibly resulting in out-of-memory errors
- possible out-of-memory error when selecting large file and having "core.autocrlf=input" configured
- Stage did nothing on "Added" conflicts
- fixed names on Unstage/Revert Hunk
- Working Tree window: Changes pane does not show file if it is made visible while a file already was selected

- Conflict Solver:
- external conflict solver: temporary files may be corrupted by replacing LF with CRLF

- Refresh:
- index files format 4 could not be read
- fails for repotool files which have been initialized with --worktree option
- Windows: might fail if file in repository was inaccessible (regression since 20.2)
- Setup: possible internal error with invalid msysgit-installation location
- Startup: --log with a file fails with "Cache has not yet been updated/initialized"

- Syntax coloring:
- Java: binary and hex literals were not detected correctly
- PHP: 'strings in quotes' are not detected in script mode
- MacOS 11: radio button selection changes invisibly when clicking a dfifferen tab item

SmartGit 21.1
- Changes view: possible paint artefacts by resizing window

SmartGit 20.2.5
- BitBucket: redundant "access token"-refresh requests if integration and OAuth is enabled
- internal error if java.library.path contains invalid entry

- File log: internal error when invoking Files, Rename
- Repositories, Refresh:
- after switching branches, obsolete submodules may remain
- after switching branches, state of new submodules should be populated

- Refresh: possible "submodule has error-prone admin area configuration" warning for main repositories created with "--separate-git-dir"
- Submodule, Initialize: problems with named submodules

- Quick Stash behaves like normal Stash (showing a dialog)
- Stash on Demand: must not apply if operation stopped in abortable state (rebase, merge, ...)

- macOS: error parsing environment variables for 'fish' shell
- Windows: internal error checking directory type under special conditions

Other Noteworthy Changes:
- low-level property "smartgit.nodecache.subtrees.enabled" to disable subtree detection and functionality
- Tag grouping: "name" extraction should be honored in Branches view groups, too

SmartGit 20.2.4
- Changes view: possible redundant refreshing if repository is a worktree
- Edit Commit Message: did not warn before modifying pushed commits if HEAD was selected
- Gerrit: detection fails if hooks/commit-msg is a symlink

- Files: Blame should not be available on submodules
- File Log:
- failed to open for deleted-by-us conflict
- (re)selecting "Index" node should reset Files/Changes view

- Investigate: possible "missing blob" error when selecting commit which contains removed submodule

- possible internal error for submodule entries containing // in .git/config
- Working Tree window: possible wrong matching between submodule entries in .git/config and .gitmodules

- Shell: invalid parsing of $'foo' or $(command parameter)

SmartGit 20.2.3
- Branches: stashes might be missing in case of corrupted logs/refs/stash file (which still could be processed by Git)
- Changes View: no caret was visible
- Distributed Reviews: showed duplicate comments on left side

- Files: possible internal error related to deleted-by-us submodule conflicts
- Graph: possible "missing blob" error when selecting commit which contains removed submodule

- Refresh: possible internal error related to concurrently changing, renamed files
- Spell checker: could not read files with UTF-8-BOM
- Startup/opening repository: possible internal error related to file-system probing of special network drives

- fixed C# and SQL parsing of # lines, also fixing a performance problem
- Python: a line containing only a # was not detected as comment line

- Worktrees: for some minor internal operations the worktree's config file was search at the wrong location

Other Changes:
- Git-Flow: added low-level-property "gitflow.external.avh1.12"

- Details: possible confusion about "Tags", "Same State Tags" and "Closest Tags"
- Graph, Filtering: horizontal space better used for filter options

- having SmartGit running only in the tray, launching it a 2nd time reopens last repositories
- Linux: with dark theme comboboxes were hard to read

SmartGit 20.2.2
- Changes View, Compare, ...: internal error trying to stage/apply a selection at the file end
- Log: possible internal error related to layouting very broad graphs
- Preferences: internal error clicking search icon in search input field
- Set Tracked Branch: possible internal error for branch names like "2%"

Syntax coloring:
- Java: 100f is not detected as one number, but as 100 and f
- JavaScript: missed RegEx string
- macOS 10.15: problem parsing environment variables if 'tcsh' is used as shell

Other Changes:
- updated SWT
- Linux: internal error changing screen DPI

SmartGit 20.2.1
New Features and Improvements:
- Commit, line-length guides: added low-level properties commit.lineLengthGuide.limit1/limit2/limit3 to configure limits
- Log - Select Parent/Child Commit has less priority if a file is selected; makes is easier to use the same shortcut for other commands, e.g. Previous/Next Change

- Files - "inactive" submodules did not show up despite of selected "Show Ignored File"
- Internal error selecting Files tab if it is in the same tab group as the Changes view
- Graph (File log) - for grouped tags, denote whether the first tag is signed

- During refresh comments vanished temporarily in Changes view

- Windows - possible false-positive modifications of symlinks
- Internal error in case of corrupted filemode bits in .git/index
- Subtree, Add - may fail with "terminal prompts disabled" message

SmartGit 20.2.0
- Journal: possible internal error on drag and drop
- Log:
- Interactive Rebase, Modify/Split Commit: menu items should not be disabled because of merge commits (but though reject to operate because of merge commits)
- Refresh:
- Linux, macOS: performance regression related to timestamp precision
- Remove Worktree: possible internal error if working tree was open in multiple windows
- Stage: reported warnings about unrelated inaccessible directories
- Linux: internal error related to checking the version of the bundled Git
- macOS:
- Cmd+W did not close log or working tree window
- Stage: did not work for repository located directly at $HOME

- Ignore dialog: added low-level property "ignore.defaultSelection" that influences which option is selected by default depending on the selected file count and names
- LFS: added low-level property "executable.addBinDirectoryToPath" to prepend the Git bin directory to the PATH, because otherwise for some configs git-lfs is not found
- Log:
- Graph: added low-level property "log.graph.drawSignedIcon" to hide the icon for signed commits

SmartGit 20.1.5
- Commit view with commit template message does not clean comment line (as Commit dialog does)
- Compare: options for ignoring whitespace are not remembered on "Remember as Default"
- Git-Flow, Start Feature: fixed wording in case of fast-forward merge is necessary
- Log: possible internal error with swapped node cache
- Passwords file: possible empty error dialog in case of corrupt passwords file
- Update check is disabled after setting up SmartGit as registered user
- Workaround for

SmartGit 20.1.4
- Changes: is not cleaned up correctly if file is selected and repository is removed outside SmartGit

Compare, Conflict Solver:
- internal error applying last (non-empty) line to other side

Conflict Solver:
- "compare.applyGitFilters" was not honored

Distributed Reviews:
- Integrate Pull Request: squashing fails with Git error "You cannot combine --squash with --commit"
- Files, Copy commands: internal error if invoked in bare repository
- Format Patch default external tool: was only available for head commit (regression)
- GitHub Enterprise/GitLab: client certificates without password couldn't be used

- Graph: Checkout offered to track even remote head branch, e.g. origin/HEAD
- Refresh: after opening repository, background tasks (like continuing SVN clone) were not scheduled
- Refresh: "File system loop encountered" as part of the node cache refreshing
- Settings: bugtracker-settings.xml was not read on first start

- possible problems when trying to resume a clone
- Table control: with table.scrollToSelection=false setting a selection did not unselect previously selected files
- Working Tree window: title was not showing open repository under certain conditions

SmartGit 20.1.3
New Features, Improvements:
- File Log, Blame, Investigate: rename detection for searching the file origin was limited to commits with up to 500 additions/removals
- Search for Repositories: added low-level property repositorySearch.autoSearchInDialog to disable the automatic search (useful for slow machines with hard drives)

Fixed Bugs:
- could not be started with + sign in the path
- BitBucket/others: Create Pull Request dialog contained duplicate target entries
- Distributes Reviews:
- Branches view: "Show Closed Pull Requests" had no effect
- External Tools: even if 2 refs are required, the tool could be invoked on a single ref
- Find Object, open repository: did not always select open repository
- File compare: stderr/stdout redirection for external tools did not work

- possible "404 not found" error for subsequent refresh after adding a comment
- Log: possible out-of-memory error while refreshing comments

- for file log, the filter pattern from the repository root log was initialized

- when filtered, checking out a commit may erroneously check out mapped local/remote branch, e.g. different commit

- Linux: right-clicking set focus too late and hence showed an outdated context menu

- possible endless loop in file system benchmarking code
- Working Tree window: opening broken repository (without admin dir) broke subsequent refreshing and file monitoring until repository was closed and reopened

- cloning to path with lower-case drive letter caused core.worktree to be set resulting in a notification of SmartGit - workaround for a Git bug

SmartGit 20.1.2
New Features and Improvements:
- Commit template: set caret at the end of the first (valid) line (instead of the beginning)
- Log, Graph view: set low-level property "log.graph.showMergeCommitsGray" to false to not avoid gray merge commits
- Rebase Interactive, Investigate: don't stop after title when shortening message
- Search/Filter: set low-level property "fileSearchOrFilter.matchInside" to false to match the file name start
- Refresh: set low-level property "nodecache.reflogRoots.followSymlinks" to false to prevent possible "java.nio.file.FileSystemLoopException"

Fixed Bugs:
- Blame: didn't distinguish between trailing line ending or not
- Branches view: Del key did not invoke Delete command on focused remote
- Commit: committing many files created multiple commits
- Compare, Index Editor: did not keep posix file mode on save
- Files view: "intent-to-add" files showed up as "modified"
- Gravatar images: incorrectly sized when switching between display zoom level 100% 200% on the same machine
- JIRA integration (cloud instance): didn't re-ask for password in case of HTTP error 403
- Linux: launcher script suggested to try SWT_GTK3=0 though GTK2 is not supported any more

- Changes view: changes for "assume unchanged" files were not displayed (as in Working Tree window)
- Commit view: missing primary "parent" link for merge commit when "Follow Only First Parent" is selected
- Files view: internal error comparing Index with conflicts against commit
- Graph view: signed commit symbol was not supported by macOS system font
- window could be closed while a command was running
- pressing Ctrl+Shift+3 if all files are staged, did not focus the right table in the Files view
- Preferences, Colors tab: no editor colors were shown on macOS

- internal error if core.excludesfile points to invalid path
- internal error if HEAD points to non-local branch
- possible internal error related to core.ignoreCase=true on case-sensitive file system (e.g. Linux)
- removed but ignored, physically existing file showed up as untracked

- possible internal error for file names containing special characters
- possible error "..System Volume Information"
- Windows: possible error "the following file has local modifications"
- SSH: using "System SSH" Git was not correctly configured for plink passing invalid arguments ("plink: unknown option "-o"")

SmartGit 20.1.1
Fixed Bugs:
- Commit: internal error double-clicking entry in file completion popup
- Clone: internal error if clone finishes after the repository had been removed while cloning
- several commands: internal errors for "unusual" file names

- Files view (Linux): staging all files loses focus
- Refresh: working tree node doesn't show up after switching back to modified repository

- Setup wizard: the Log vs. Working Tree option covers more changed options now
- updated Chinese translation

SmartGit 20.1
Fixed Bugs:
- temp dir cleanup did not work reliable on shutdown
- Windows installer: did not uninstall "Open in SmartGit" explorer context menus
- Windows: tree control uses full row selection as on other platforms, because seems to be fixed now

- Log, Graph: "SVN revision" column won't immediately show up after opening SVN repository (but only after first refresh once it's already open)

SmartGit 19.1.7
Fixed Bugs:
- BitBucket Server: possible internal error when refreshing (related to moved repositories)
- GitHub, Create Pull Request: fails if target repository name contains uppercase letters

- Git-LFS lock file information may fail to parse due to new timestamp format
- Git-LFS locks processing (for own locks) should be more tolerant in case of missing "owner"
- corrupt yml settings files (e.g. containing 0x00 bytes) fail SmartGit to start
- Investigate: showed DeepGit version in title

SmartGit 19.1.6
Fixed Bugs:
- Git-Flow, Integrate/Finish Feature: may unexpectedly skip commits to rebase
- Opening bare repository may fail due to missing "logs" directory
- Internal error setting log level to FINE

- possible internal error for files obstructured by submodules

Log/Working tree window:
- memory leak when closing

Log Graph/Journal:
- internal error if a user name contained r

- changing Auxiliary Ref in submodule did not refresh automatically

- internal error trying to ignore the root directory; resolved by only allowing directories containing only untracked (or ignored) files

- for notification "Repository ... has a locked index" the "Delete" button may not work if .git/index.lock has been removed in the meanwhile

- text input field, e.g. filters: Ctrl+Z triggered accelerator instead of accepting as undo for text field

SmartGit 19.1.5
New Features, Improvements:
- Table control: added low-level property table.scrollToSelection to prevent scrolling to selection, e.g. after toggling the sort status

Fixed Bugs:
- GitHub: query was not tolerant in case of missing parent repositories
- Rebasing commands (reordering, changing messages, ...): had problems with spaces in paths
- Opening a missing repository in 2 windows could result in an internal error when confirming the removal
- Possible internal error related to bare repositories
- Index Editor: did not show a warning if a file could not be saved, e.g. because it was locked by another application
- I18n: variable text parts could be replaced by "1", "2", ...
- Internal error saving passwords
- For commercial users with outdated licenses the evaluation did not work
- Applying changes from default settings (startup.settingsToReplaceFromDefaults) did not work when upgrading from old XML files
- resizing the window did not redraw the "Long lines" view causing garbage to be shown there
- forgots some options when using "Remember as Default"

- opening a freshly cloned shallow repository failed if a commit listed in .git/shallow was not present in the repository

SmartGit 19.1.4
New Features, Improvements:
- Branches view: ability to copy stash name
- Changes view: include commit ID for "Could not find submodule commit" message
- Hosting providers: added low-level property
- smartgit.hostingProvider.skipCheckForConfigurations to prevent, e.g. notifications "Bitbucket Server integration is not yet configured"
- Added low-level property smartgit.pull.skipCheckForExternalCredentialsHelper to prevent notification "External Credentials Helper detected"

Fixed Bugs:
- Files: toggling Show Directories did not update the GUI immediately
- Working Tree refresh: possible internal error related to core.ignoreCase=true
- Clicking sourcetree:// URLs in Bitbucket did not open clone wizard any more

- Submodule initialization was not possible if smartgit.svn.scanSubmodulesForNonSvnParents=true
- Refresh: uninitialized submodules don't show up if smartgit.svn.scanSubmodulesForNonSvnParents=true

- Ctrl+Shift+1/2/... did not work if commit message field in Commit/Message view
- Was focused
- Graph/Journal view: focus rect not drawn correctly
- Windows launchers were monitor-dpi-aware by accident
- Other Noteworthy Changes
- Dropped "Merge Directly To" 3rd-party tool due to a couple of problems with changed low-level Git API

SmartGit 19.1.3
Fixed Bugs:
Log, Graph:
- Enter did not the same as double-click
- Focus rect is not drawn any more
- Compare or others: possible internal error applying change
- Output: for Git >= 2.23, progress output like "Compressing objects:" is not properly-recognized anymore
- Stash On Demand: should not fail with "Your local changes have been stashed away, but could not be reapplied." if stashing untracked files is disabled
- Windows: if some special environment variables were set, e.g. JAVA_TOOL_OPTIONS, the launchers did not recognize the bundled JRE and possibly tried to use an outdated one from the system causing an internal error

SmartGit 19.1.2
Fixed Bugs:
- Finish Release: Tag Message is not set to tag
- Finish Feature/Hotfix/Release: should not remeove remote branch if "push" option is deselected

- Commit view: temporary inconsistency might caused assertion

- Could become inconsistend between selected refs and shown commits
- When merging a tag (by right-clicking it), commit or other branch name on commit was used instead of the tag
- Adding/removing tag from local branch did not properly update local/remote state (orange vs. black nodes)
- Rebasing state: "done" labels might be in wrong order
- Repository state banner text could get focus with blinking caret, e.g. after having clicked (Rebase) Continue
- Internal error trying to open bare repository containing .git admin directory
- Window | Files tried to focus Directories view, even if hidden
- Pull: possible internal error if repository config could not be read
- Refresh: - reduced short-term memory usage
- Stash on Demand: asked to stash untracked files even if option to stash untracked files was unselected

- Cherry Picking a not yet pushed commit (= a commit without a revision) fails with "Aborting commit due to empty commit message "forgot" https credentials

- Possible internal error expanding a tree control

SmartGit 19.1.1
Fixed Bugs:
- Commit, Discard: invoking Compare for renamed file does not show source file, but only empty file

- Integrate did not honor custom base (if configured)
- Start Hotfix fails if an unrelated version-tag is present
- Start Release may suggest invalid (already existing) release name

- Tools: tools with only ${dirSelect} did not show up in menu
- Startup: under certain conditions always asks for confirmation to send bug traces

SmartGit 19.1.0
- GitLab: Open-link did not work for repositories in subgroups

- Cloning created 2 smartgit-*.tmp files in repository
- Duplicate tooltip in the status bar while cloning

- Docking: unmaximizing a view with double click could close another view
- If its (X) button was positioned at the same location

SmartGit 18.2.9
Fixed Bugs:
- Git-Flow, Finish Hotfix: when using external Git-Flow no "version tag" is created
- Support for new BitBucket API

SmartGit 18.2.8

New Features, Improvements:
- SSH: support user names wrapped in single-quotes, e.g. ssh://'foo@bar'@server:1234/path

Fixed Bugs:
- Linux launcher: only enforce GTK_IM_MODULE=ibus if it was set to xim
- macOS: an update of the installation bundle caused a directory to remain

Other Noteworthy Changes:
- increased version of bundled Git to 2.21.0

SmartGit 18.2.7

New Features, Improvements:
- Log: improved error message for "Inconsistency between (cached) commit data detected"
- https: added low-level property connection.https.trustedFingerprints to work around certificate problems with self-signed certificates and proxies
- SSH: authentication-related errors are reported now on re-occurring credentials dialog

Fixed Bugs:
- Refresh: false-positive "repository has an error-prone admin area configuration" message for submodules in worktrees
- setting smartgit.log.hostingProviderIntegrationEnabled=true should not disable Distributed Review add-on

- Repositories: opening a repository opened already in another window (working tree or log) causes internal error if renamed or deleted on disk (missing repository)
- Repository Settings on missing repository might cause internal error

Working Tree:
- Merge and other commands with embedded log: branch selection dialog should not hide remote, tracked branches

- Check for New Version: broken if "Automatically download and install updates" has been selected in the preferences
- Docking: maximizing and restoring one view by double clicking its title restores the wrong (too old) size

SmartGit 18.2.6

New Features, Improvements:
- Fetch (background): continues with next submodules if one failed
- Git-Flow: added low-level property gitflow.integrate.shortMergeMessage
- Journal: added low-level property journal.defaultAuxiliaryRef

- Repositories: disallow to delete submodules

Fixed Bugs:
- Commit: error "Cannot read file .../.gitbugtraq" if content is invalid

- Details: unexpected ID detection inside words
- Distributed Reviews: trying to reveal comment failed with "Comment ... could not be revealed"
- File log: Window | Repositories caused internal error
- mergable coloring used hard-to-see color for anchor in dark theme

- possible internal error have a large amount of renamed files
- low-level property "log.wt.refreshOpenButUnselectedModels did not work on nested roots

Working Tree:
- Show Changes: Compare with Each Other did not work for files from different repositories
- delete on submodule did not work anymore
- startup: command line parameter "--investigate" was broken
- unmodified SVN submodules in non-SVN parent repositories showed up if "Show Unchanged Files" was unselected
- JIRA/Bitbucket Server/GitLab: problems when trying to access servers which only support a limited set of ciphers (elliptic curves); installation upgrade is required!
- Windows bundles: fixed outdated readme.txt

SmartGit 18.2.5

New Features, Improvements:
- Gerrit added low-level property gerrit.checkCommitMsgHookContent to avoid false-positive Gerrit detection

- Branches, Checkout added low-level property log.checkout.forceSelectionOfBranchAnchor
- Linux startup script easier switching back to GTK2

Fixed Bugs:
- Commit Amend-option was disabled for merge

- Commits view revealing HEAD should always reveal HEAD and not stay at working tree node (e.g. double-clicking from Journal)

- log.wt.refreshOpenButUnselectedModels broke refresh of commits breaks in case of invalid Bisect configuration (missing "start" branch)

- Customize Accelerators dialog internal error if a filtered-out accelerator is cleared by setting another Compare/Merge, Apply Selection possible internal error if all was selected

SmartGit 18.2.4

New Features, Improvements:
- Details view: added low-level property
- Log.details.onlyShowActualCommitRefsWhenFiltered

- Support for Mercurial 4.8.*

Fixed Bugs:
Commits view:
- Reordering commits did not preserve selection
- Rebase/cherry-pick by drag & drop was broken
- When filtering, "actually on commit"-marker for refs (brighter box) was not properly evaluated

Branches view:
- Reveal after Checkout did not work for behind branch with
- "Just Checkout" option
- Checking out a branch should not reset a manually changed
- Selection
External tools: incorrect parameter "--defaultsVersion" (instead Of "--version") for "Show Git Version" tool (regression)
- Working Tree Window, Files view context menu: LFS submenu might
- Have been empty (if LFS was not yet installed)
- MacOS: warning about default osxkeychain credential helper

- Possible performance problems with many draft commits in a Repository with many merges
- Startup: possible internal error when specifying invalid value for
- Low-level property ui.verboseDate.weekdayFormat

- Changes view: scrolling with mouse-wheel over connector selected
- Next tab (if there were multiple tabs)
- Customize accelerators: did not warn about duplicate accelerators
- If the commands where invisible because of filtering

SmartGit 18.2.3

New Features, Improvements:
- Added low-level property log.dragAndDrop.offerAdvancedOperationsForDropsOntoAncestors to allow drag and drop for advanced rebase and cherry-pick operations
- Open File Log reuses Branches view selection from repository log

Repositories view:
- Select the current repository only if another repository or group was selected before (but, e.g., no subdirectory)

Fixed Bugs:
- Compare, Apply Selection: internal error applying change from an inserted block

- Git-Flow Light: for various command dialogs "Fetch" options were disabled
- Pull: "Update existing and fetch new tags" did not work for Git >= 2.20
- Refresh: obsolete modified working tree overlaps new commit for a short time, then vanishes

Working Tree window:
- Changes were not reported gradually anymore

- Several views: tab order cycled between table and search input field
- Find Command, Find Object: shortcuts were swapped

SmartGit 18.2.2

New Features:
- Repositories: added low-level property log.wt.refreshOpenButUnselectedModels
- To update the repository state of open, but not currently
- Selected repositories
- Pull with rebase, merge commit: added low-level property
- Pull.rebase.mergeCommit.mergeOrRebase to avoid merge-or-rebase dialog

Fixed Bugs:
- Index content might not have been displayed if file was
- Case-changed in working tree
- Staging hunk for case-changed file did not work

- Filter broke after changing low-level property
- Log.graph.graphicalFiltering in the preferences
- Switching branches lost Working Tree/Index selection
- File/Subdir log did not remember layout
- Repositories: state got lost when opening multiple repositories
- At once and having "Show Working Tree & Index Permanently"
- Selected
- File Compare: forgot about BOM

SmartGit 18.2.1

- Added low-level property log.graph.workingTreeAutoSelectionForConflicts to disable auto-selection of the working tree node if conflicts were detected

- Added low-level property ui.fonts.useDefaultAsInfo to make the info font the same as the default font (instead of a tinier, derived one)

Fixed Bugs:
- Clone listed only own repositories, but should have listed all with read-access ("member" role)
- GitHub/GitLab/BitBucket integration: internal error trying to merge on server
- Log - resettings filter should not auto-select Working Tree or Index node
- Repositories - could not invoke Pull/Push commands on group

- Proxy port was not remembered after switching off the proxy temporarily

- Some special SSH server setups caused an error "ClassNotFound:
- Org.ietf.jgss.GSSException" to be raised => these users should force an installation update from the About dialog using the button right beside the version text field

- Update check: multiple "The upgrade to version x is not covered by your license" notifications showed up

SmartGit 18.2

Fixed Bugs:
- Branches view: Ctrl+C did not copy ref name
- Changes view (Windows): old file content does not show up for case-changed files
- Push to Gerrit: should be available in case of multiple Gerrit remotes (if sill unique)

SmartGit 18.1.5

New Features and improvements:
- Push to Gerrit: if topic is entered, add topic to master-option, like "refs/for/master%topic=topic"

Fixed Bugs:
- Gitignore/Git-config editor: is bright even with dark theme
- Find Objects: possible internal error when entering a long search string
- Refresh/Log: rename detection limit should be 50% by default (as for Git)

- internal error if no Git executable is configured
- startup: possible internal error related to a bad settings.xml

SmartGit 18.1.4
- Change log not available for this version

SmartGit 18.1.3

Git (Log):
- Refresh: improved error message in case of bad stash-reflogs revealing a ref in an existing, filtered log window now resets the filter Updated bundled Git to version 2.17.1 (macOS, Windows; needs new installation or manual triggering of a genuine update in the About dialog)
- Bitbucket integration: improved error reporting
- Output dialog: remembers size (and location)
- Some hosting providers: added low-level property "json.enableGzip" to enable GZIP compression
- Setup wizard: added option to use (in the preferences, it was moved from the Commands > Log page to the Privacy page)

Fixed Bugs (Git):
- Commit Message view: entered message was not stored in the history
- Ignore: internal error trying to ignore directory with certain special characters like '[' in its name
- Local | Rename: allowed to rename the . directory

- internal error switching back from "Varying Coloring" to "Root Coloring" toggling individual pull requests did not work
- Log/Journal: - right-clicking an unselected commit showed commands for previously selected commit (Linux, macOS)
- Refresh: possible error for files with name "aux" (Windows)
- Stash Selection: failed with quotes in the message
- Bitbucket integration: problems parsing multiple reviewers
- GitHub integration (main window): certain errors were not reported
- GitLab integration: API version v3 is not supported any more

- recurring error "The fingerprint of the SSH server has changed"
- an invalid .ssh/known_hosts file might show a lot of notifications about the failed read
- Tools: internal error invoking tool on repository located on drive root (Windows)
- Upgrade (Windows): possible "The process cannot access the file because it is being used by another process" error

SmartGit 18.1.2

New Features and improvements:
- Log: re-introduced former "varying" coloring
- added low-level property compare.gitCompatibleBinaryDetection

Fixed Bugs:
- interactive rebased timed out after 2min (Windows)

- possible "Node ... not found" error when opening repository
- right-clicking loses selection if scrolled down
- Rebase Head To: "Can't rebase HEAD to HEAD or an anchestor commit" error if
- HEAD is hidden

- Conflict Solver: did not open for graft-conflicts
- Log: internal error when opening in Rebasing state
- SSH: certain problems with private key authentication (depending on files
- parallel to the provided private key file)

Linux bundle:
- added work-around for reg-ex related Java crashes caused by syntax
- highlighting code
- DEB bundle did not start on Ubuntu 18.04

SmartGit 18.1.1

New features and improvements:
- Git-Flow: if the low-level property gitflow.requireCleanWorktreeOnStart is set to true, starting a feature or hotfix with local changes will abort
- Log: if low-level property log.graph.displayCommitDateForAuthor is set to true, it will show the author, but the commit (instead of the author) date
- Output: if low-level property output.showOnlyIfViewInvisible is set to false, the Output dialog is shown independent of the Output view's visibility

Fixed Bugs:
- Blame: memory leak
- Edit Last Commit Message: internal error when in bisecting mode
- Journal, Move & Squash: when dragging onto first pushed commit, no "already pushed" warning was displayed memory leak when switching between repositories frequently quotes around filter definitions, e.g. git-crypt, caused errors starting these commands possible error "Raw log messge does not parse as log entry"
- Refresh: internal error when opening repositories with core.worktree set

- Refresh: possible hang related to conflicts
- Compare: Ignore Whitespace should not display completely unchanged blocks as changed

SmartGit 18.1.0

- Possible internal error opening log in merging or rebasing state
- Added system property smartgit.nodecache.maxCachesToKeepInMemory to limit the log caches to keep in memory

Investigate (DeepGit):
- Memory leak
- Wrong colors used for system-independent light theme
- Various commands with dialog-based Log (Checkout, Merge, ...): graph filter options missing in File input field's drop-down menu

SmartGit 17.1.6 Build 11221

New features and improvements:
- Log, Tools menu: allow tools that operate on the repository using ${repositoryRootPath}

Fixed bugs:
- Git-Flow: when merging, stop processing if merge aborts due to file permission problems
- Refresh: possible internal error for special characters in file name and wrong system charset
- Stash Selection: contained redundant "--" when invoking "git stash push"

SmartGit 17.1.5 Build 11217

New features and improvements:
- built-in SSH client: support for diffie-hellman-group-exchange-sha256

Fixed Bugs:
- Git:
  - Log:
    - Compare:
      - Linux/GTK2: possible internal error painting comments
      - too large font was used for comments
- SVN: changing URL did not work reliable - disabled
- Bitbucket: possible 401 authentication failures after redoing OAuth
  authentication while SmartGit is running

SmartGit 17.1.4 Build 11213

External Diff tools:
- set system property "" to true to apply
- filter..smudge
- System property "smartgit.executable.home" supports $USERPROFILE on Windows
- support for Git 2.16's SSH client detection ("The SSH server '-G' could not be found")

Fixed Bugs:
- after a fresh setup, "Mark as Favorite" notification comes up again every couple of seconds when dismissing with red x
- Changes view, Index Editor: staging LF-only files converted it to CRLF in Index
- Investigate: Open Log may result in internal error if Blame was not yet initialized

- Branches: toggling single branch in unselected category may add additional 2nd-level branch to selection
- Changes: Compact Changes option did not work (regression)
- Refresh: internal error related to renamed files

User interface:
- Preferences, Text Editor colors: ruler colors were not applied/stored
- OS X: possible internal error related to connecting/disconnecting monitors update check: did remind user to enable update check while it was disabled by system property

SmartGit 17.1.3 Build 11198

New Features, Improvements:
- Log: the count of the loaded commits is now hidden by default (set smartgit.log.commits.showLoadedCount to true to show it)
- JIRA integration: option smartgit.jira.fixResolutionId to specify the issue resolution ID that should be used to mark issues as resolved
- Set smartgit.updateCheck.checkForLatestBuildVisible to false to hide Help | Check for Latest Build
- Investigate: don't require DeepGit license for licensed SmartGit users

Fixed Bugs:

- Merge, Abort and others: could not be invoked if .gitmodules was in conflicting state

- Include with relative path like ../.gitconfig did not work in .git/config
- Wrong display after creating orphan branch
- Review comments: not able to add first comment to file