Skip to content

Instantly share code, notes, and snippets.

@jeremybeavon
Created August 20, 2015 09:57
Show Gist options
  • Save jeremybeavon/88f296e2bdb07a0a3f42 to your computer and use it in GitHub Desktop.
Save jeremybeavon/88f296e2bdb07a0a3f42 to your computer and use it in GitHub Desktop.
Powershell script that return an object representing git log
$startString = '@%x22%n'
$endString = '%n%x22@
$dollar = '%x24'
$gitHash = "GitHash=$startString%n$endString"
$author = "Author=$startString%an$endString"
$branch = "Branch=$startString%d$endString -replace '^\s*\([^,]+,\s*[^,]+,\s*(?<BranchName>[^\)]+)\).*$dollar', '$dollar{BranchName}'"
$date = "Date=[datetime]::ParseExact($startString%ad$endString, %x22ddd MMM dd HH:mm:ss zzz", $($dollar)null)"
$logMessage = "LogMessage=$startString%s$endString"
$changes = "Changes=$startString"
$format = "`"$endString},@{$gitHash;$author;$branch;$date;$logMessage;$changes`""
Function Get-GitLog([string]$Options)
{
return Invoke-Expression (((git log $Options --pretty=format:$format --name-status) -join "`n" -replace '^\n"@\},', '') + "`n""@}")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment