Git Azure DevOps管道:参考旧版本存储库

Git Azure DevOps管道:参考旧版本存储库,git,hash,azure-devops,repository,pipeline,Git,Hash,Azure Devops,Repository,Pipeline,是否可以从阶段中的特定哈希引用回购? 例如:作为一个参数,我给出了commit的hash,由于这个参数,我可以在“构建”阶段使用特定版本的存储库中的repo文件夹。不,这是不可能的,因为有两个原因需要使用现成的工具 一个资源存储库不允许传递特定的提交: 资源: 存储库: -存储库:字符串标识符A-Z、A-Z、0-9和下划线 类型:枚举请参阅以下类型主题 名称:字符串存储库名称格式取决于`类型` ref:要使用的字符串ref名称;默认设置为“参考/头部/主体” 端点:用于非Azure Repos类

是否可以从阶段中的特定哈希引用回购?
例如:作为一个参数,我给出了commit的hash,由于这个参数,我可以在“构建”阶段使用特定版本的存储库中的repo文件夹。

不,这是不可能的,因为有两个原因需要使用现成的工具

一个资源存储库不允许传递特定的提交:

资源: 存储库: -存储库:字符串标识符A-Z、A-Z、0-9和下划线 类型:枚举请参阅以下类型主题 名称:字符串存储库名称格式取决于`类型` ref:要使用的字符串ref名称;默认设置为“参考/头部/主体” 端点:用于非Azure Repos类型的服务连接的字符串名称 触发器:此存储库的CI触发器,如果跳过,则没有CI触发器仅适用于Azure Repos 分支机构: 包括:[string]将触发生成的分支名称 排除:[string]不会被删除的分支名称 标签: 包括:[string]将触发生成的标记名 排除:[string]不会显示的标记名 路径: 包括:[string]必须匹配才能触发生成的文件路径 排除:[string]不会触发生成的文件路径 第二,目前不能在资源范围内使用模板语法。使用运行时参数是模板表达式的一个示例

所以要做到这一点,你应该设置

- checkout: none
阻止获取源代码,然后使用命令行自行处理。通过这种方式,您应该能够使用运行时参数执行此操作,并将commit sha作为参数传递


您可以将其签出

否这是不可能的,因为有两个原因可以使用现成的工具执行此操作

一个资源存储库不允许传递特定的提交:

资源: 存储库: -存储库:字符串标识符A-Z、A-Z、0-9和下划线 类型:枚举请参阅以下类型主题 名称:字符串存储库名称格式取决于`类型` ref:要使用的字符串ref名称;默认设置为“参考/头部/主体” 端点:用于非Azure Repos类型的服务连接的字符串名称 触发器:此存储库的CI触发器,如果跳过,则没有CI触发器仅适用于Azure Repos 分支机构: 包括:[string]将触发生成的分支名称 排除:[string]不会被删除的分支名称 标签: 包括:[string]将触发生成的标记名 排除:[string]不会显示的标记名 路径: 包括:[string]必须匹配才能触发生成的文件路径 排除:[string]不会触发生成的文件路径 第二,目前不能在资源范围内使用模板语法。使用运行时参数是模板表达式的一个示例

所以要做到这一点,你应该设置

- checkout: none
阻止获取源代码,然后使用命令行自行处理。通过这种方式,您应该能够使用运行时参数执行此操作,并将commit sha作为参数传递


你可以查看它

同意Krzysztof Madej的观点

在azure devops中,没有现成的方法通过Commit Sha指定特定版本的回购

但是您可以通过git命令来实现它

由于您已经有了提交sha,因此可以使用命令行任务运行git reset-hard。然后,源回购将回滚到相应的版本

以下是一个例子:

cd $(build.sourcesdirectory)

git reset --hard $commithash
经典管道

Yaml管道:

steps:
- task: CmdLine@2
  inputs:
    script: |
      cd $(build.sourcesdirectory)
      
      git reset --hard Commitsha

在Azure管道中,默认的签出步骤相当于git clone,它将包含提交历史记录,因此您可以直接使用git commad回滚repo版本,而无需禁用签出步骤中的-checkout:none。这可能更方便

同意Krzysztof Madej的观点

在azure devops中,没有现成的方法通过Commit Sha指定特定版本的回购

但是您可以通过git命令来实现它

由于您已经有了提交sha,因此可以使用命令行任务运行git reset-hard。然后,源回购将回滚到相应的版本

以下是一个例子:

cd $(build.sourcesdirectory)

git reset --hard $commithash
经典管道

Yaml管道:

steps:
- task: CmdLine@2
  inputs:
    script: |
      cd $(build.sourcesdirectory)
      
      git reset --hard Commitsha

在Azure管道中,默认的签出步骤相当于git clone,它将包含提交历史记录,因此您可以直接使用git commad回滚repo版本,而无需禁用签出步骤中的-checkout:none。这可能更方便

我们是否需要设置任何凭据,或者它将在没有任何其他配置的情况下工作?您好@KrzysztofMadej感谢您的提醒。它可以在没有任何额外配置的情况下工作。我可以直接回滚到目标回购版本。我们是否需要设置任何凭据,否则它将在没有任何额外配置的情况下工作?您好@KrzysztofMadej,谢谢您的帮助
提醒它可以在没有任何额外配置的情况下工作。我可以直接回滚到目标回购版本。Hi@Rozmaryn。这张票有更新吗?如果答案能给你一些帮助,请随时告诉我。提醒一下。嗨@Rozmaryn。这张票有更新吗?如果答案能给你一些帮助,请随时告诉我。只是提醒一下。