我如何在Azure DevOps管道中获得主分支和拉取请求分支之间的区别



我正在尝试在两个分支之间获取新的/更改的PowerShell文件。来自主请求和我正在Azure DevOps管道中执行的请求,其中包含:

$changedFiles = (git diff --cached --name-only | Where-Object { $_ -like "*.ps1" })

然而,当命令在本地工作时,我没有得到任何消息。我认为它需要更改管道中的位置,但我在尝试定位一些存储库文件后找不到它。它应该在执行之前下载文件吗?更多代码片段:

预调试.ps1

Get-Location # returns D:a1s
Get-ChildItem # returns nothing
gci -recurse -filter "test.ps1" # returns nothing
$changedFiles = (git diff --cached --name-only | Where-Object { $_ -like "*.ps1" })
$exitCode = 0
$changedFiles # returns none
if ($changedFiles.length -eq 0) {
exit $exitCode
}
else{
...
}

天青-哌啶.yml

trigger:
- main
jobs:
- job: RunScript
pool:
vmImage: windows-2019
steps:
- powershell:
.pre-commit.ps1

更新

$files = (git diff --name-only HEAD HEAD~1 | Where-Object {$_ -match 'w*.ps[m]?1' })

git diff --cached将只显示索引(使用git add暂存的文件(和当前提交之间的差异
虽然它可能会在工作副本中显示修改(在工作计算机上,您可能处于在提交文件之前已修改并暂存文件的状态(,但它通常不会在CI管道中运行的副本中工作(例如,CI管道中的操作通常不涉及修改代码文件和运行git add(。


如果您想列出在提交eacf11eacf22之间修改的文件,请删除--cached选项并简单地运行:

git diff --name-only eacf11 eacf22

您也可以通过标记名称或分支名称引用提交,也可以使用HEAD来表示"提交";当前提交":

git diff --name-only master HEAD
git diff --name-only v1.2.1 eacf22

相关内容

最新更新