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 | |
} |
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
Hmm, just tried this again with your approach and it works. Go figure.