我还需要列出在 Azure DevOps 服务中特定拉取请求中修改的文件列表。
我检查了一些线程,例如 List Changed files of a Pull Request using powershell or git,但没有给出解决方案。大多数答案都是针对 github 的,而不是 azure devops。
所以,我想知道是否有这样一个直接的 git 命令来获取它,如果没有,如何使用相应的 Azure Devops REST API 脚本来实现这一点?请帮忙。
背景:
我创建了一个由
SIT
分支上的 PR(构建验证)触发的管道:
管道配置如下:
ModifiedFileTest
是我的测试分支名称,它基于SIT
分支:
输出:
如果您的本地克隆中有最新的分支,则分支
feature
到 main
的差异或“合并请求视图”为:
git diff origin/main...origin/feature # 3 dots, not a typo
注意:此语法的行为记录在git help diff
的“描述”部分中
它基本上显示了
origin/feature
和“它分叉的点 origin/main
”之间的差异,并且我知道的所有平台(github、gitlab、azure devops、bitbucket ...)都在其“Pull”中显示了此差异请求”视图。
您可以向
git diff
添加任何其他合适的选项,例如 --name-only
或 --name-status
:
# list of files modified in 'feature':
git diff --name-only origin/main...origin/feature
# list+status of files modified in 'feature':
git diff --name-status origin/main...origin/feature
[更新]您在管道中运行此命令(在您的情况下:AzureDevops Pipeline)
此设置中的一个常见问题是:默认情况下,许多作业系统(github、gitlab、azure devops ...)将仅创建存储库的部分克隆,并使用仅从中获取有限分支集的选项组合远程和仅获取部分历史记录的选项(所谓的浅克隆)。
git log branch-a..branch-b
或 git diff branch-a...branch-b
这样的范围规范隐含地要求拥有两个分支的历史,至少要追溯到这两个分支之间最不共同的祖先。因此:如果您不断看到有关应该存在的分支或不存在的合并基础的错误,您可以关闭作业中的“浅”功能,或在脚本中运行一些显式的
git fetch
命令:
git fetch origin SIT ModifiedFileTest
git fetch --deepen=100 origin SIT ModifiedFileTest
LeGEC的答案是正确的。
在Azure DevOps Pipeline中,您需要设置远程源,然后您可以运行git diff来获取更改的文件。
示例:
git remote add origin1 RepoURL
git remote update
git diff origin1/test origin1/master
然后我们就可以获取更改后的文件了。