Today I ran into the following issue that was announced for new pipelines created after September 2022. They would have the option for shallow fetch enabled for 1 level deep. In effect, this gives you a full copy of the files used to start your pipeline.

Sometimes you want to be able to write something back to your git repository for whatever reason. It will probably look something like this.
git config --global user.email "$(Build.RequestedForEmail)"
git config --global user.name "$(Build.RequestedFor)"
git checkout new-dev
echo "Some content to a file" > .erick
git add .
git commit -m "add file"
git push
git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" push --set-upstream origin $(Build.SourceBranchName)
When you do this in a pipeline created after September 2022 you will get the following error. Due to the new default shallow fetch, there are no git resource files available, and you are effectively in a detached head state.

The fix is easy to achieve, just add them fetchDept: 0
to the checkout in your pipeline. This will force the repo to be fetched like before, with all the git artifacts that you need for your git commands.
steps:
- checkout: self
persistCredentials: true
fetchDepth: 0
Let’s hope this blog saves somebody the pain we had and had to figure out what happened overnight 😉
You must be logged in to post a comment.