首页 > 解决方案 > Azure DevOps 使用 Git 子模块的问题

问题描述

我在 Azure DevOps 中定义的构建管道遇到了问题。这个问题类似于这篇文章中描述的问题,但引用的修复对我不起作用。构建作业Get Source任务运行,但我定义的 Powershell 失败,因为代理使用了分离的 HEAD。我是 Git 和 Azure DevOps 的新手(在 SVN 和 TeamCity/CruiseControl.NET/NANT 方面有丰富的经验),所以在不同的命令和权限之间我很受阻。

我能够创建两个测试存储库并将一个作为另一个的子模块。我构建了一个使用 Powershell 任务将子模块更新为 HEAD 的过程:

Write-Host
Write-Host "RUNNING: git status"
git status

Write-Host
Write-Host "RUNNING: git checkout SubmoduleExperiment"
git checkout SubmoduleExperiment

Write-Host
Write-Host "RUNNING: git submodule update --remote --merge"
git submodule update --remote --merge

Write-Host
Write-Host "RUNNING: git commit -am ""updated submodule"""
git commit -am "updated submodule"

Write-Host
Write-Host "RUNNING: git push"
git push https://$($env:PatForGitPushes):PAT@myTeam.visualstudio.com/MyTeam/_git/my-test HEAD:SubmoduleExperiment

但是,当我将相同的任务应用于我的实际项目/构建时,它会失败,因为当git checkout master它告诉我时,behind 'origin/master' by 1 commit即使分离的 HEAD 指向与 origin/master 相同的提交。

我已经将我的测试和“真实”构建之间的获取源任务设置为相同。我已将子模块的 URL 设置为在两者中都使用 PAT。

关于如何解决这种情况的任何建议?

标签: gitazure-devops

解决方案


推荐阅读