Azure Devops Checkout - 挂钩已存在:预推送

问题描述 投票:0回答:1

我有一个非常简单的过程:

  - checkout: self
    clean: ${{ parameters.cleangit }}
    persistCredentials: true
    lfs: true
    submodules: true
    fetchDepth: 0

当我第一次运行管道时 - 一切看起来都很好。第二次在同一家分店 - 一切都很好。但是当我将分支从 Dev 更改为 main 时,我收到错误:

Hook 已存在:预推送

#!/bin/sh
command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting '.git/hooks/pre-push'.\n"; exit 2; }
git lfs pre-push "$@"

要解决此问题,请执行以下任一操作: 1:运行

git lfs update --manual
有关如何合并挂钩的说明。 2:运行
git lfs update --force
覆盖你的钩子。 ##[错误]Git-lfs 安装失败,退出代码:2

我尝试了参数“clean” - 没有运气。 有什么想法如何修复它并使用 git lfs 吗?

git azure-devops azure-pipelines-yaml git-lfs
1个回答
0
投票

将管道作业从 MS 托管代理切换到自托管代理时,我们看到了有关现有挂钩的相同错误。事实证明,我们需要在每次使用属性运行之前清理工作区目录

workspace: clean: all

- job: myJob
  workspace:
    clean: all

根据workspace的doc

当您在自托管代理上运行管道时,默认情况下,在两次连续运行之间不会清理除 $(Build.ArtifactStagingDirectory) 和 $(Common.TestResultsDirectory) 之外的任何子目录。因此,您可以进行增量构建和部署,前提是实施任务以利用它。您可以使用作业上的工作区设置覆盖此行为。

© www.soinside.com 2019 - 2024. All rights reserved.