From 77acf532d641f0fb685e123849aee6b706314ecc Mon Sep 17 00:00:00 2001 From: sima-zhu Date: Wed, 2 Mar 2022 13:29:24 -0800 Subject: [PATCH 1/4] Common scripts for git diff changes --- eng/common/scripts/git-diff-changes.ps1 | 29 +++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 eng/common/scripts/git-diff-changes.ps1 diff --git a/eng/common/scripts/git-diff-changes.ps1 b/eng/common/scripts/git-diff-changes.ps1 new file mode 100644 index 000000000000..67aa15753e18 --- /dev/null +++ b/eng/common/scripts/git-diff-changes.ps1 @@ -0,0 +1,29 @@ +<# + .SYNOPSIS + Returns git diff changes in pull request. + + .DESCRIPTION + The script is to return diff changes in pull request. + + .PARAMETER SourceCommittish + The branch committish PR merges from. + Definition of committish: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefcommit-ishacommit-ishalsocommittish + + .PARAMETER TargetCommittish + The branch committish PR targets to merge into. +#> +[CmdletBinding()] +param ( + [string] $SourceCommittish = ${env:BUILD_SOURCEVERSION}, + [string] $TargetCommittish = ("origin/${env:SYSTEM_PULLREQUEST_TARGETBRANCH}" -replace "refs/heads/") +) +# Git PR diff: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests#three-dot-and-two-dot-git-diff-comparisons +Write-Host "git -c core.quotepath=off -c i18n.logoutputencoding=utf-8 diff $TargetCommittish...$SourceCommittish --name-only --diff-filter=d" +$changedFiles = (git -c core.quotepath=off -c i18n.logoutputencoding=utf-8 diff "$TargetCommittish...$SourceCommittish" --name-only --diff-filter=d) +if(!$changedFiles) { +Write-Host "No changed files in git diff between $TargetCommittish and $SourceCommittish" +} +foreach ($file in $changedFiles) { +Write-Host "The diff file is: $file" +} +return $changedFiles \ No newline at end of file From 7c1f6aa200346df9d080ba7c52291454300b0ade Mon Sep 17 00:00:00 2001 From: sima-zhu Date: Wed, 2 Mar 2022 13:36:34 -0800 Subject: [PATCH 2/4] Remove the localizer. --- eng/common/scripts/git-diff-changes.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/common/scripts/git-diff-changes.ps1 b/eng/common/scripts/git-diff-changes.ps1 index 67aa15753e18..fbc8f03aca1e 100644 --- a/eng/common/scripts/git-diff-changes.ps1 +++ b/eng/common/scripts/git-diff-changes.ps1 @@ -17,7 +17,7 @@ param ( [string] $SourceCommittish = ${env:BUILD_SOURCEVERSION}, [string] $TargetCommittish = ("origin/${env:SYSTEM_PULLREQUEST_TARGETBRANCH}" -replace "refs/heads/") ) -# Git PR diff: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests#three-dot-and-two-dot-git-diff-comparisons +# Git PR diff: https://docs.github.com/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests#three-dot-and-two-dot-git-diff-comparisons Write-Host "git -c core.quotepath=off -c i18n.logoutputencoding=utf-8 diff $TargetCommittish...$SourceCommittish --name-only --diff-filter=d" $changedFiles = (git -c core.quotepath=off -c i18n.logoutputencoding=utf-8 diff "$TargetCommittish...$SourceCommittish" --name-only --diff-filter=d) if(!$changedFiles) { From 00360a0d291a6bf63f4bc43e705ed7111e2b6080 Mon Sep 17 00:00:00 2001 From: sima-zhu Date: Wed, 2 Mar 2022 13:43:13 -0800 Subject: [PATCH 3/4] Check not PR triggered case --- eng/common/scripts/git-diff-changes.ps1 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/eng/common/scripts/git-diff-changes.ps1 b/eng/common/scripts/git-diff-changes.ps1 index fbc8f03aca1e..b45b4ad2dad6 100644 --- a/eng/common/scripts/git-diff-changes.ps1 +++ b/eng/common/scripts/git-diff-changes.ps1 @@ -17,6 +17,12 @@ param ( [string] $SourceCommittish = ${env:BUILD_SOURCEVERSION}, [string] $TargetCommittish = ("origin/${env:SYSTEM_PULLREQUEST_TARGETBRANCH}" -replace "refs/heads/") ) + +# If ${env:SYSTEM_PULLREQUEST_TARGETBRANCH} is empty, then return empty. +if ($TargetCommittish -eq "origin/") { + Write-Host "There is no target branch passed in. " + return "" +} # Git PR diff: https://docs.github.com/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-comparing-branches-in-pull-requests#three-dot-and-two-dot-git-diff-comparisons Write-Host "git -c core.quotepath=off -c i18n.logoutputencoding=utf-8 diff $TargetCommittish...$SourceCommittish --name-only --diff-filter=d" $changedFiles = (git -c core.quotepath=off -c i18n.logoutputencoding=utf-8 diff "$TargetCommittish...$SourceCommittish" --name-only --diff-filter=d) From b8a2139b21e26aa3f112bdbaf34bd365fa4981c7 Mon Sep 17 00:00:00 2001 From: sima-zhu Date: Wed, 2 Mar 2022 14:01:47 -0800 Subject: [PATCH 4/4] Pretty print --- eng/common/scripts/git-diff-changes.ps1 | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/eng/common/scripts/git-diff-changes.ps1 b/eng/common/scripts/git-diff-changes.ps1 index b45b4ad2dad6..c2f4befa5b3a 100644 --- a/eng/common/scripts/git-diff-changes.ps1 +++ b/eng/common/scripts/git-diff-changes.ps1 @@ -14,7 +14,7 @@ #> [CmdletBinding()] param ( - [string] $SourceCommittish = ${env:BUILD_SOURCEVERSION}, + [string] $SourceCommittish = "${env:BUILD_SOURCEVERSION}", [string] $TargetCommittish = ("origin/${env:SYSTEM_PULLREQUEST_TARGETBRANCH}" -replace "refs/heads/") ) @@ -27,9 +27,10 @@ if ($TargetCommittish -eq "origin/") { Write-Host "git -c core.quotepath=off -c i18n.logoutputencoding=utf-8 diff $TargetCommittish...$SourceCommittish --name-only --diff-filter=d" $changedFiles = (git -c core.quotepath=off -c i18n.logoutputencoding=utf-8 diff "$TargetCommittish...$SourceCommittish" --name-only --diff-filter=d) if(!$changedFiles) { -Write-Host "No changed files in git diff between $TargetCommittish and $SourceCommittish" + Write-Host "No changed files in git diff between $TargetCommittish and $SourceCommittish" } +Write-Host "Here are the diff files:" foreach ($file in $changedFiles) { -Write-Host "The diff file is: $file" + Write-Host " $file" } return $changedFiles \ No newline at end of file