@ Paul-
mio profilo PowerShell per Git è basato su uno script che ho trovato qui:
http://techblogging.wordpress.com/2008/10/12/displaying-git-branch-on-your-powershell-prompt/
ho modificato un po 'per visualizzare il percorso della directory e un po' di formattazione. Imposta anche il percorso del mio percorso Git bin da quando utilizzo PortableGit.
# General variables
$pathToPortableGit = "D:\shared_tools\tools\PortableGit"
$scripts = "D:\shared_tools\scripts"
# Add Git executables to the mix.
[System.Environment]::SetEnvironmentVariable("PATH", $Env:Path + ";" + (Join-Path $pathToPortableGit "\bin") + ";" + $scripts, "Process")
# Setup Home so that Git doesn't freak out.
[System.Environment]::SetEnvironmentVariable("HOME", (Join-Path $Env:HomeDrive $Env:HomePath), "Process")
$Global:CurrentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$UserType = "User"
$CurrentUser.Groups | foreach {
if ($_.value -eq "S-1-5-32-544") {
$UserType = "Admin" }
}
function prompt {
# Fun stuff if using the standard PowerShell prompt; not useful for Console2.
# This, and the variables above, could be commented out.
if($UserType -eq "Admin") {
$host.UI.RawUI.WindowTitle = "" + $(get-location) + " : Admin"
$host.UI.RawUI.ForegroundColor = "white"
}
else {
$host.ui.rawui.WindowTitle = $(get-location)
}
Write-Host("")
$status_string = ""
$symbolicref = git symbolic-ref HEAD
if($symbolicref -ne $NULL) {
$status_string += "GIT [" + $symbolicref.substring($symbolicref.LastIndexOf("/") +1) + "] "
$differences = (git diff-index --name-status HEAD)
$git_update_count = [regex]::matches($differences, "M`t").count
$git_create_count = [regex]::matches($differences, "A`t").count
$git_delete_count = [regex]::matches($differences, "D`t").count
$status_string += "c:" + $git_create_count + " u:" + $git_update_count + " d:" + $git_delete_count + " | "
}
else {
$status_string = "PS "
}
if ($status_string.StartsWith("GIT")) {
Write-Host ($status_string + $(get-location) + ">") -nonewline -foregroundcolor yellow
}
else {
Write-Host ($status_string + $(get-location) + ">") -nonewline -foregroundcolor green
}
return " "
}
Finora, questo ha funzionato molto bene. Mentre in un repository, il prompt sembra felicemente:
GIT [master] c: 0 u: 1 d: 0 | J: \ Projects \ forks \ fluent-nhibernate>
* NOTA: aggiornato con i suggerimenti di Jakub Narębski.
- Rimosso il git branch/git status calls.
- Indirizzato a un problema in cui 'git config - globale' sarebbe fallito perché $ HOME non era impostato.
- È stato risolto un problema durante il quale navigare in una directory che non disponeva della directory .git causava il ritorno della formattazione al prompt PS.
fonte
2009-08-17 13:15:49
Come abilitare questo modulo all'avvio? Sembra che powershell dimentichi questo modulo ogni volta che apro una nuova istanza. – Mihir
@Mihir devi creare un profilo, guarda le risposte https://stackoverflow.com/questions/24914589/how-to-create-permanent-powershell-aliases# –
@NicolaPeluchetti Grazie! Ho seguito https://www.howtogeek.com/50236/customizing-your-powershell-profile/ e ho appena aggiunto 'Import-Module posh-git' nel mio profilo PowerShell. Ha funzionato come un fascino! – Mihir