The 1.0.0 release is targeted specifically at Windows PowerShell 5.x and (cross-platform) PowerShell Core 6.x, both of
which support classes, enabling the enhanced structure of $GitPromptSettings,
and writing prompt strings using ANSI escape sequences /
Console Virtual Terminal Sequences (supported since Windows 10 version 1511).
Consequently, this release introduces BREAKING changes with 0.x. If you are still on Windows PowerShell 2.0, 3.0 or 4.0, please continue to use the 0.x version of posh-git.
- Renamed
$GitPromptSettingsvaluesBeforeTexttoBeforeStatusDelimTexttoDelimStatusAfterTexttoAfterStatusBeforeIndexTexttoBeforeIndexBeforeStashTexttoBeforeStashAfterStashTexttoAfterStash
- Split
$GirPromptSettings.DefaultPromptSuffixand$GitPromptSettings.DefaultPromptDebugSuffixinto:DefaultPromptBeforeSuffix('')DefaultPromptDebug(' [DBG]:'), which is rendered if a debugger is attachedDefaultPromptSuffix('$(">" * ($nestedPromptLevel + 1)) '), which is rendered last (or returned fromprompt, for terminals that don't support escape sequences)
- Renamed
$GitPromptSettings.EnableWindowTitleto$GitPromptSettings.WindowTitlewith significant improvements:$Host.UI.RawUI.WindowTitleis now set on everyprompt, not just when inside a Git repo.- To prevent setting
WindowTitle, set$GitPromptSettigs.WindowTitleto$null. - The
WindowTitleupdate has been moved from theWrite-GitStatuscommand to the built-inpromptfunction. $GitPromptSettings.WindowTitleis now fully customizable:- As a
string, it will be processed withExpandString. - As a
ScriptBlock(default), it will be executed with two parameters:$GitStatusand$IsAdmin.
- As a
- When a color setting is specified by a
string(color name), it is parsed as an HTML color (on platforms that supportSystem.Drawing.ColorTranslator) before being parsed as aConsoleColor. To force usingConsoleColors, use static member syntax (e.g.[ConsoleColor]::Cyan). (PR #536) PoshGitVcsPrompterrors now show details if$GitPromptSettings.Debug(PR #560)
- New command
Get-PromptPathwhich formats the path displayed in the prompt and window title. This command honors$GitPromptSettings.DefaultPromptAbbreviateHomeDirectory.- A path exactly matching
$HOMEis now shown in full, rather than abbreviated to~(PR #567)
- A path exactly matching
- New
$GitPromptSettingsvalues (default):PathStatusSeparator()DefaultPromptPath('$(Get-PromptPath)')DefaultPromptWriteStatusFirst($false)DefaultPromptTimingFormat(' {0}ms')
RepoNameproperty has been addded to the$global:GitStatusobject returned byGet-GitStatus.- Added
$GitPromptSettings.UntrackedFilesMode; accepted values are$null(inheritstatus.showUntrackedFiles), "all", "no", and "normal" (#556) (PR #557) Thanks David Snedecor (@TheSned) - Exported
Expand-GitCommandfor use with custom tab expansion (#562) (PR #563)
- Fixed
$GitPromptSettings.EnablePromptStatusshould not affectGet-GitStatusby adding-Forceparameter. (#475) (PR #535) - Fixed PowerShell Core bug where we were using
Get-Content -Encoding Bytewhen processing profile scripts during Chocolatey install/uninstall. That encoding doesn't exist in PowerShell Core. Switched toGet-Content -AsByteStreamon PowerShell Core. (PR #532) - Fixed ANSI rendering bug: when both
ForegroundColorandBackgroundColorcolors are$null(default), we were emitting an unnecessary terminating escape sequence"$([char]27)[0m". (PR #532) - Fixed issue where setting
ForegroundColororBackgroundColorto 0 (Black) rendered the default color instead. - Updated Git subcommand lists (#561) (PR #571)
- Drop support for PowerShell 2.0 (#163) (PR #427)
- Drop support for PowerShell 3.0 and 4.0 (#328) (PR #513)
- Remove public
Enable-GitColors,Get-AliasPattern,Get-GitBranchandInvoke-NullCoalescingand its??alias (#93) (PR #427)
-
Changed the
$GitPromptSettingshashtable to a stongly typed object. Here is one example of the impact of this change:$GitPromptSettings.LocalWorkingStatusSymbol = '#' $GitPromptSettings.LocalWorkingStatusForegroundColor = [ConsoleColor]::DarkRed
Changes to:
$GitPromptSettings.LocalWorkingStatusSymbol.Text = '#' $GitPromptSettings.LocalWorkingStatusSymbol.ForegroundColor = [ConsoleColor]::DarkRed
-
Changed
Write-VcsStatus,Write-GitStatusandWrite-Promptto return a string rather than write to host when the host supports ANSI escape sequences.
- Implement support for ANSI escape sequences for colored output - support System.ConsoleColor, System.Drawing.HtmlColor
(if available on the platform) and 24-bit color. NOTE: this is a breaking change since
Write-VcsStatus,Write-GitStatusandWrite-Promptwill now return a string rather than write to the host when the host supports ANSI escape sequences. (#304) (#447) (#455) - $GitPromptSettings is now a strongly typed object using PS classes (#344) (PR #513)
- Provide more granular commands than just
Write-GitStatus. (#345) (PR #513) We now export the commands thatWrite-GitStatususes internally which are:- Write-GitBranchName
- Write-GitBranchStatus
- Write-GitIndexStatus
- Write-GitStashCount
- Write-GitWorkingDirStatus
- Write-GitWorkingDirStatusSummary
- Fixed Get-AuthenticodeSignature not on PS Core. (PR #487)
- Provide DefaultPromptPrefixColor and DefaultPromptSuffixColor options (#474) (PR #520)
- Fixed posh-git prompt makes PowerShell transcripts less readable (#282) (PR #447)
-
posh-git now exports the variable
$GitPromptScriptBlockwhich contains the code for the default prompt. (#501) (PR #513)If you need to execute your own logic in your own prompt function but still want to display the default posh-git prompt, you can execute this scriptblock from your prompt function e.g.:
# profile.ps1 function prompt { Set-NodeVersion &$GitPromptScriptBlock } Import-Module posh-git
-
Fixed 'Write-Prompt' to be able use Black as foreground color. (#470) (PR #468) Thanks Vladimir Poleh (@vladimir-poleh)
-
Pass "git.exe" instead of "git" to Get-Command. (PR #478) (PR #479) Thanks Mike Sigsworth (@mikesigs)
-
Squash ssh agent warnings if
-Quiet. (PR #484) Thanks Refael Ackermann (@refack) -
Fixed directory names that contain [brackets] cause GitPrompt to fail. (PR #502) Thanks Duncan Smart (@duncansmart)
-
Added
Add-PoshGitToProfile -AllUserssupport (PR #504) -
Fixed duplicated branch completion for git checkout (#505) (PR #506) (PR #512) Thanks Christoph Bergmeister (@bergmeister)
-
Fixed PSScriptAnalyzer warnings in the source (PR #509) Thanks Christoph Bergmeister (@bergmeister)
-
Fixed errors added to $Error collection by
Get-GitStatuscommand (#500) (PR #514) -
Clean up wording for work dir local status in help file (PR #516)
-
Added
$GitPromptSettings.AdminTitlePrefixText(default:'Administrator: ') (#537) (PR #538) Thanks Eric Jorgensen (@nebosite) -
Added
$GitPromptSettings.UntrackedFilesMode; accepted values are$null(inheritstatus.showUntrackedFiles), "all", "no", and "normal" (#556) (PR #557) Thanks David Snedecor (@TheSned) -
PoshGitVcsPrompterrors now show details if$GitPromptSettings.Debug(PR #560) -
Exported
Expand-GitCommandfor use with custom tab expansion (#562) (PR #563) -
Add code coverage to Coveralls.io (#416) (PR #461) Thanks Jan De Dobbeleer (@JanJoris)
- Fixed tab completion issues with duplicate aliases (#164) (#421) (PR #422)
Add-PoshGitToProfilewill no longer modify a signed$PROFILEscript; it also learned-Confirm(PR #428)- Overwrite pre-0.7 posh-git prompt on import (PR #425)
- Fix Chocolatey deprecation warning with dependency on 0.9.10 (PR #426)
- Don't rerun Pageant if there are no keys to add (PR #441)
- Improve (and hide for Chocolatey) profile.example.ps1 deprecation messaging (#442) (PR #444)
- Quote tab completion for remote names containing special characters (PR #446)
- Fix signed $PROFILE detection for PowerShell v2 (#448) (PR #450)
- Create $PROFILE parent directory if missing (PR #449) (PR #452)
- Add -verbose parameter to install.ps1 (PR #451)
- Write-Prompt now correctly handles $null color parameters; the prompt now also uses DefaultForegroundColor when appropriate (PR #454)
- Add error handling to Write-GitStatus (PR #170) (PR #453)
This release has focused on improving the "getting started" experience by adding an Add-PoshGitToProfile command that
modifies the user's PowerShell profile script to import the posh-git module whenever PowerShell starts.
When posh-git is imported, it will automatically install a posh-git prompt that displays Git status summary information.
Work was also done to improve performance of Get-GitStatus when inside large Git repositories.
Work was begun to eliminate some obvious crashes on PowerShell on .NET Core but more work remains to be done.
- Performance of
Get-GitStatuson large repos has been improved (PR #319) - Fix prompt and tab completion with non-ASCII characters (#64) (PR #223) (PR #359) (#374) (#389) (PR #397) (PR #403)
- Fix incorrect tab expansion for
git push --option <remote>(#234) (PR #379) - Fix support for bare repository (#291) (PR #370)
- Fix syntax error on setenv calls (PR #297)
- Fix temp path issue with ~ in 8.3 filenames (#298) (PR #299)
- Fix problem on open source PowerShell, missing
WindowsPrincipal/WindowsIdentity(#301) (PR #312) - Fix/simplify Chocolatey install and add uninstall (#358)
- Remove invalid branch from tab expansion when
HEADis detached (PR #367) - Fix PowerShell Core error on
EnvironmentVariableTarget(#317) (#369) (PR #318) - Fewer errors generated in global
$Errorcollection (PR #370) - Remove error thrown by
git symbolic-refandgit describe(PR #307) - Export command Write-VcsStatus to improve module auto-loading (PR #284)
- Update module import so that it sets the prompt function iff the user does not have a customized prompt function (#217) (PR #349)
- Update profile.example.ps1 to remove prompt function and tweak how module is imported (PR #349)
- Add tab completion for AVH git-flow commands (PR #231)
- Add new commmand Add-PoshGitToProfile (PR #361)
- Add about_posh-git help topic (PR #298)
- Add new settings for default posh-git prompt:
- Add ahead/behind count to prompt
(PR #256)
- Add
BranchBehindAndAheadDisplaysetting to control count display (Full (default), Compact, Minimal)
- Add
- Fix empty
Git-SshPathissue (PR #268) - Add new settings for prompt status summary text:
FileAddedText,FileModifiedText,FileRemovedTextandFileConflictText(PR #277) - Add tags to 'push' tab-completion (PR #286)
- Add new branch status to indicate upstream is gone (PR #326)
- Add tab completion support for shorthand force-push syntax (
git push <remote> +<tab>) (#173) (PR #174) (PR #343) - Add tab completion of unique remote branch names for
git checkout <tab>(#177) (PR #251) (PR #352) - Add
git worktreetab completion (PR #366) - Add alias support for TortoiseGit commands (PR #394)
- Add support for tab-completion of Git parameters, long and short (PR #395)
- Switch
$GitPromptSettingstype fromPSObjecttoPSCustomObject. On PowerShell v5 and higher, this preserves the definition order of properties in$GitPromptSettingsmaking it easier to find properties. - Fix prompt status in worktree (#407) (PR #408)
- Quote tab completion for items containing special characters (#293) (PR #413)
Thank you to the following folks who contributed their time and scripting skills to make posh-git better:
- Keith Hill (@rkeithhill)
- Pester test infrastructure
- Triage of open issues and PRs
- Many README and help improvements
- Many of the fixes enumerated above
- Marcus Reid (@cmarcusreid)
- Use GitStatusCache when it's installed (PR #208)
- Report UpstreamGone from GitStatusCache response (PR #372)
- Jason Shirk (@lzybkr)
- Ralf Müller (@seamlessintegrations)
- Add support for tab-completion of Git parameters (PR #395)
- Aksel Kvitberg (@Flueworks)
- Add Worktree tab completion (PR #366)
- Eric Amodio (@eamodio)
- Add aliasing support for TortoiseGit commands (PR #394)
- Kevin Shaw (@shawmanz32na)
- Add DefaultPromptAbbreviateHomeDirectory setting (PR #387)
- KanjiBates (@KanjiBates)
- Fix link to git-scm.com in README.md (PR #396)
- Joel Rowley (@hjoelr)
- Fix syntax error on setenv calls (PR #297)
- Hui Sun (@JimAmuro)
- Josh (@joshgo)
- Add tags to 'push' tab-completion (PR #286)
- Rebecca Turner (@9999years)
- Add new settings for prompt FileAddedText, FileModifiedText, FileRemovedText and FileConflictText (PR #277)
- Jack (@Jackbennett)
- Export command Write-VcsStatus to improve module auto-loading (PR #284)
- Brendan Forster (@shiftkey)
- Paul Marston (@paulmarsy)
- INOMATA Kentaro (@matarillo)
- Fix branch names using UTF8 characters do not display correctly (PR #223)
- Luis Vita (@Ivita)
- Fix typo in git commit parameter --amend in tab exansion (PR #405)
- Skeept (@skeept)
- Fix debug prompt breaking posh-git prompt on PowerShell v4 (PR #406)
- @theaquamarine
- Jan De Dobbeleer (@JanJoris)
- Remove errors thrown by
git symbolic-refandgit describe(PR #307)
- Remove errors thrown by
- Dan Smith (@dozius)
- Add tab completion for AVH git-flow commands (PR #231)
- @drawfour
- Add ahead/behind count to prompt (PR #256)
- Dan Turner (@dan-turner)
- Add tab completion support for shorthand force-push syntax (
git push <remote> +<tab>) (PR #174)
- Add tab completion support for shorthand force-push syntax (
- Mark Hillebrand (@mah)
- Add tab completion of unique remote branch names for
git checkout <tab>(PR #251)
- Add tab completion of unique remote branch names for
- Jeff Yates (@somewhatabstract)
- Don't rerun Pageant if there are no keys to add (PR #441)
- Tolga Balci (@tolgabalci)