@ Paul-
Mi perfil PowerShell para Git se basa apagado de un script que encontré aquí:
http://techblogging.wordpress.com/2008/10/12/displaying-git-branch-on-your-powershell-prompt/
He modificado un poco para mostrar la ruta del directorio y un poco de formateo. También establece el camino a mi ubicación de la papelera de Git ya que uso 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 " "
}
Hasta ahora, esto ha funcionado muy bien. Mientras está en un repositorio, el mensaje se ve felizmente como:
GIT [maestro] c: 0 u: 1 d: 0 | J: \ Projects \ forks \ fluent-nhibernate>
* NOTA: Actualizado con sugerencias de Jakub Narębski.
- Se han eliminado las llamadas de estado de git branch/git.
- Resolvió un problema por el cual 'git config --global' fallaría porque $ HOME no estaba configurado.
- Se solucionó un problema por el que navegar a un directorio que no tenía el directorio .git ocasionaba que el formato volviera al indicador de PS.
¿Cómo habilito este módulo en el inicio? Parece que powershell olvida este módulo cada vez que abro una nueva instancia. – Mihir
@Mihir tienes que crear un perfil, mira las respuestas https://stackoverflow.com/questions/24914589/how-to-create-permanent-powershell-aliases# –
@NicolaPeluchetti ¡Gracias! Seguí https://www.howtogeek.com/50236/customizing-your-powershell-profile/ y acabo de agregar 'Import-Module posh-git' en mi perfil de Powershell. ¡Trabajado como un encanto! – Mihir