获取一个拉取请求的更改文件列表

问题描述 投票:0回答:2

我还需要列出在 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
分支:

输出:

git azure-devops azure-devops-rest-api
2个回答
3
投票

如果您的本地克隆中有最新的分支,则分支

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 会出错,并显示错误“未知修订”,
  • git log branch-a..branch-b
    git diff branch-a...branch-b
    这样的范围规范隐含地要求拥有两个分支的历史,至少要追溯到这两个分支之间最不共同的祖先。

因此:如果您不断看到有关应该存在的分支或不存在的合并基础的错误,您可以关闭作业中的“浅”功能,或在脚本中运行一些显式的

git fetch
命令:

  • 显式获取 2 个远程分支:
    git fetch origin SIT ModifiedFileTest
  • 获取这些分支的更深入历史记录:
    git fetch --deepen=100 origin SIT ModifiedFileTest

2
投票

LeGEC的答案是正确的。

在Azure DevOps Pipeline中,您需要设置远程源,然后您可以运行git diff来获取更改的文件。

示例:

git remote add  origin1 RepoURL
git remote update    
git diff  origin1/test  origin1/master

然后我们就可以获取更改后的文件了。

© www.soinside.com 2019 - 2024. All rights reserved.