我有一个 Git monorepo,其中有两个文件夹(两个单独的解决方案)。我为每个解决方案设置了两个 CI 构建。每个 CI 都已Enable Continuous Integration
激活。对于每个 CI 管道,我Path filters
为每个文件夹指定(排除),以防止 CI 构建为其他文件夹的任何提交。
私人代理有没有办法只下载受提交影响的源文件[文件夹下]?
也就是说,当Database文件夹获得提交时,代理只下载Database文件夹下的源文件。
这有关系Checkout submodules
吗?
更新
这是我的 PowerShell 脚本:
cd $(Build.SourcesDirectory)
git config --global user.email "my_email_here"
git config --global user.name "my_username_here"
git init
git remote add origin -f https://my_username_here@dev.azure.com/my_username_here/TxProject/_git/testtwoprojects
git config core.sparseCheckout true
Set-Content -Path .git/info/sparse-checkout -Value "Source/*"
git pull origin master
我收到的错误是:
git:致命:遇到 InvalidOperationException。在 C:\agent_work_temp\b5feb3b7-f104-48a0-94d8-a8c769e84a6e.ps1:8 char:1 + git remote add origin -f https://my_username_here@dev.azure.com/my_username_here/TxProjec ... + ~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (fatal: InvalidO...on meet.:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError PowerShell exited with code '1' .
解决方案
我找到了解决方案。首先,我更改为命令行任务(来自 PowerShell)并2>&1
在命令末尾添加。
最终代码是:
cd $(Build.SourcesDirectory)
git config --global user.email "user_email"
git config --global user.name "user_name"
git init
git remote add origin -f LINK_TO_REPO 2>&1
git config core.sparseCheckout true
echo Source/ >> .git/info/sparse-checkout
git pull origin master 2>&1