-
Notifications
You must be signed in to change notification settings - Fork 8.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tools: add Get-OSSConhostLog (#7250)
This script takes a range of commits and generates a commit log with the git2git-excluded file changes filtered out. It also replaces GitHub issue numbers with GH-XXX so as to not confuse Git2Git or Azure DevOps. Community contributions are tagged with CC- so they can be detected later. The output looks like this: ``` Carlos Zamora (2) * Pass mouse button state into HandleMouse instead of asking win32 (GH-6765) Dustin L. Howett (6) * Disable MinimalCoreWin when OpenConsoleUniversalApp is false (GH-7203) James Holderness (1) * Add support for the "doubly underlined" graphic rendition attribute (CC-7223) ``` Yes, the numbers are wrong. No, it doesn't really matter.
- Loading branch information
Showing
2 changed files
with
73 additions
and
3 deletions.
There are no files selected for viewing
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
# Copyright (c) Microsoft Corporation. | ||
# Licensed under the MIT license. | ||
|
||
################################ | ||
# This script takes a range of commits and generates | ||
# a commit log with the git2git-excluded file changes | ||
# filtered out. | ||
# | ||
# It also replaces GitHub issue numbers with GH-XXX so | ||
# as to not confuse Git2Git or Azure DevOps. | ||
# Community contributions are tagged with CC- so they | ||
# can be detected later. | ||
|
||
[CmdletBinding()] | ||
Param( | ||
[string]$RevisionRange | ||
) | ||
|
||
Function Test-MicrosoftPerson($email) { | ||
Return $email -like "*@microsoft.com" | ||
} | ||
|
||
# Replaces github PR numbers with GH-XXX or CC-XXX (community contribution) | ||
# and issue numbers with GH-XXX | ||
Function Mangle-CommitMessage($object) { | ||
$Prefix = "GH-" | ||
If (-Not (Test-MicrosoftPerson $object.Email)) { | ||
$Prefix = "CC-" | ||
} | ||
|
||
$s = $object.Subject -Replace "\(#(\d+)\)", "(${Prefix}`$1)" | ||
$s = $s -Replace "#(\d+)","GH-`$1" | ||
$s | ||
} | ||
|
||
Function Get-Git2GitIgnoresAsExcludes() { | ||
$filters = (Get-Content (Join-Path (& git rev-parse --show-toplevel) consolegit2gitfilters.json) | ConvertFrom-Json) | ||
$excludes = $filters.ContainsFilters | ? { $_ -Ne "/." } | % { $_ -Replace "^/","" } | ||
$excludes += $filters.SuffixFilters | % { "**/*$_"; "*$_" } | ||
$excludes += $filters.PrefixFilters | % { "**/$_*"; "$_*" } | ||
$excludes | % { ":(top,exclude)$_" } | ||
} | ||
|
||
$Excludes = Get-Git2GitIgnoresAsExcludes | ||
Write-Verbose "IGNORING: $Excludes" | ||
$Entries = & git log $RevisionRange "--pretty=format:%an%x1C%ae%x1C%s" -- $Excludes | | ||
ConvertFrom-CSV -Delimiter "`u{001C}" -Header Author,Email,Subject | ||
|
||
Write-Verbose ("{0} unfiltered log entries" -f $Entries.Count) | ||
|
||
$Grouped = $Entries | Group Email | ||
$Grouped | % { | ||
$e = $_.Group[0].Email | ||
$p = $_.Group[0].Author | ||
"$p ($($_.Group.Count))" | ||
$_.Group | % { | ||
If ($_.Subject -Imatch "^Merge") { | ||
# Skip merge commits | ||
Return | ||
} | ||
$cm = Mangle-CommitMessage $_ | ||
"* $cm" | ||
} | ||
"" | ||
} |