Created
March 27, 2018 12:22
-
-
Save SimonWahlin/91e974c9128f164ea840b6a8e09e7bd8 to your computer and use it in GitHub Desktop.
Pre-Commit hook for git that will fix my user.email setting for me
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!C:\Program\ Files\PowerShell\6.0.0\pwsh.exe -File | |
$Pattern = '^origin\s+https://(\S+)\s\(push\)' | |
$Origin = (& 'git' 'remote' '-v') -match $Pattern | Where-Object -FilterScript {$_ -is [string]} | |
$RemoteDomain = if($Origin -match $Pattern) {$Matches[1]} | |
$Email = & 'git' 'config' '--get' 'user.email' | Where-Object -FilterScript {$_ -is [string]} | |
$DesiredEmail = switch -Wildcard ($RemoteDomain) { | |
'simonwahlin.visualstudio.com*' { | |
'[email protected]' | |
break | |
} | |
'advaniase.visualstudio.com*' { | |
'[email protected]' | |
break | |
} | |
'github.com*' { | |
'[email protected]' | |
break | |
} | |
} | |
if($Email -ne $DesiredEmail) { | |
Write-Warning -Message 'WRONG EMAIL!' | |
Write-Warning -Message "Changing to: $DesiredEmail" | |
& 'git' 'config' 'user.email' $DesiredEmail | |
} |
Hmm, just tried this again with your approach and it works. Go figure.
BTW I settled on this approach because I didn't like the brittleness of specifying the path to pwsh.exe on Windows:
#!/usr/bin/env pwsh
The only downside is that this still runs your profile scripts which in my case can really slow down processing of commits. I ended up putting this in my profile script for now:
# If run as part of a pre-commit hook do not run rest of profile
if (Test-Path Env:\GIT_INDEX_FILE) { return }
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@SimonWahlin I can't get the shebang to work as you've specified it. The PowerShell script is ignored until after the commit and then i get a prompt to open a text file. When I select notepad, the pre-commit script opens in it.
I have been able to get this to work:
But it would be nice not to have to invoke sh just to launch PowerShell.