gpt4 book ai didi

git - VSTS 构建 : Git submodule automatization

转载 作者:行者123 更新时间:2023-12-03 23:56:23 25 4
gpt4 key购买 nike

我们从 TFS 切换到 GIT。
每次启动新版本时,我们都会尝试更新子模块。

我们遵循了本指南:https://www.visualstudio.com/en-us/docs/build/scripts/git-commands#enable

我们在第 49 行有一个错误。

我们认为实际上我们需要进行身份验证。但我们不确定。
我们使用: git pull 并且它有效
但是当我们这样做时:git submodule foreach git pull origin master。
我们收到“正在输入”的消息,但没有任何 react

有人已经有这个问题了吗?你是怎么解决的?

VSTS BUILD

最佳答案

这是一个身份验证问题。您需要将 OAuth token 放入每个子模块存储库中。

确保您将构建定义设置启用为 允许脚本访问 OAuth token .如文档所述,这会将 token 填充到名为 System.AccessToken 的变量中。它还将 token 填充到 git config 设置中,您将在启用设置后运行它时在获取源步骤结束时看到该设置。这就是 git 向 VSTS 进行身份验证的方式。您需要为每个存储库构建一个配置语句,并且您需要 cd 进入该子模块以在该存储库中发布它。

这是我使用的 Powershell 脚本:

$mods = (git submodule status) | % { ($_.Trim() -split " ")[1] }
$baserepo = ($env:BUILD_REPOSITORY_URI).TrimEnd($env:BUILD_REPOSITORY_NAME)
foreach($mod in $mods)
{
cd $mod
$cmd = 'git config http.' + $baserepo + $mod + '.extraheader "AUTHORIZATION: bearer ' + $env:System_AccessToken + '"'
write $cmd
iex $cmd
cd ..
}

然后运行 ​​cmd 或 powershell 步骤:
git submodule update --remote

最后,您应该在完成后清理 token ,这样 OAuth 就不会在您的构建代理上的 .git/config 文件中挂起:
$mods = (git submodule status) | % { ($_.Trim() -split " ")[1] }
$baserepo = ($env:BUILD_REPOSITORY_URI).TrimEnd($env:BUILD_REPOSITORY_NAME)
foreach($mod in $mods)
{
cd $mod
$cmd = 'git config --unset-all http.'+ $baserepo + $mod + '.extraheader'
write $cmd
iex $cmd
cd ..
}

关于git - VSTS 构建 : Git submodule automatization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45820526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com