我正在尝试在2个分支之间获取新的/更改的PowerShell文件。从主要方面,我正在Azure DevOps管道中通过以下方式执行拉取请求:
$changedFiles = (git diff --cached --name-only | Where-Object { $_ -like "*.ps1" })
但是在命令在本地运行时我什么也没得到。我认为它需要更改管道中的位置,但是在尝试找到一些存储库文件后我找不到它。它应该在执行文件之前下载文件吗?其他一些代码片段:
预先提交
Get-Location # returns D:\a\1\s
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{
...
}
天蓝色管道
trigger:
- main
jobs:
- job: RunScript
pool:
vmImage: windows-2019
steps:
- powershell:
.\pre-commit.ps1
git diff --cached
将仅显示索引(使用暂存的文件git add
)和当前提交之间的差异。
尽管它可能会在您的工作副本中显示修改(在您的工作计算机上,您可能处于在提交文件之前修改并暂存文件的状态),但它通常无法在CI管道中运行的副本中工作(通常,例如,CI管道中的动作不涉及修改代码文件和运行git add
。
如果要列出在commiteacf11
和之间修改的文件eacf22
,请删除该--cached
选项并简单地运行:
git diff --name-only eacf11 eacf22
您还可以通过标签名称或分支名称引用提交,也可以HEAD
用来表示“当前提交”:
git diff --name-only master HEAD
git diff --name-only v1.2.1 eacf22
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句