Search code examples
gitshellazure-devopsmsbuildeof

All *.sh files became CRLF in the cloudbuild drop output


The *.sh files will become windows CRLF EOF in the cloudbuild drop output.

I have set the .gitattributes with: text= and * -text and *.sh eol=lf on master branch.

And I have added all the files in my scripts folder with: git add --renormalize .\scripts in my branch. But the cloudbuild drop would still force the *.sh file into CRLF in the drop explorer.

git config --global --get core.autocrlf is input.

How to resolve this issue?


Solution

  • I can reproduce the same issue in Azure DevOps Pipeline.

    The cause of the issue is that when we cloning the repo to Windows Agent, it will auto convert the LF to CRLF. Then when publishing the Drop Build Artifacts, it will show the CRLF EOL.

    To solve this issue, you can run the command: git config --global core.autocrlf false before the git checkout step.

    For example:

    pool:
      vmImage: windows-latest
    
    steps:
    - script: git config --global  core.autocrlf false
    
    - checkout: self
    
    - task: PublishBuildArtifacts@1
      inputs:
        PathtoPublish: '$(Build.sourcesdirectory)'
        ArtifactName: 'drop'
        publishLocation: 'Container'
    

    Then the files in the Drop Build Artifacts will keep the LF EOL.