TF401398:无法激活拉取请求,因为源和/或目标分支不再存在,或者请求的引用不是分支

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

我在使用 azuredevops golang API 创建拉取请求时遇到以下错误

错误: TF401398:无法激活拉取请求,因为源和/或目标分支不再存在,或者请求的引用不是分支

代码:

    connection := azuredevops.NewPatConnection("organizationUrl", "PAToken")
    ctx := context.Background()
    client, _ := azuregit.NewClient(ctx, connection)
    pr := azuregit.CreatePullRequestArgs{}
    repoId := git.repository.Name
    proname := "MVC Test -Demo"
    pr.Project = &proname
    pr.RepositoryId = &repoId
    sourceBranch:= "feature-test"
    targetBranch:= "main"
    pr.GitPullRequestToCreate = &azuregit.GitPullRequest{
        TargetRefName: &targetBranch,
        SourceRefName: &sourceBranch,
        Description:   &git.configuration.PrRequestMessage,
        Title:         &git.configuration.PrRequestTitle,
    }
    _, err := client.CreatePullRequest(ctx, pr)
go azure-devops-rest-api azure-repos
2个回答
2
投票

这个问题通过在分支前加上

refs/heads/
得到解决

        sourceBranch:= "refs/heads/feature-test"
        targetBranch:= "refs/heads/main"
        pr.GitPullRequestToCreate = &azuregit.GitPullRequest{
            TargetRefName: &targetBranch,
            SourceRefName: &sourceBranch,
            Description:   &git.configuration.PrRequestMessage,
            Title:         &git.configuration.PrRequestTitle,
        }
        _, err := client.CreatePullRequest(ctx, pr)

0
投票

我有同样的问题(虽然在 Azure DevOps 中)并且每次另一个修复工作:

  1. 重新创建丢失的分支(查看管道日志中的最后 400 错误)
  2. 在你的 YAML 中添加 refs/heads/ 到 main(见下面的例子)
  3. 转到项目设置 > 选择你的回购 > 转到“安全”> 选择项目集合构建服务帐户用户 > 启用“允许”以贡献拉取请求和“允许”以创建分支 enter image description here
  4. 为您的代理添加唯一的 PAT(参见下面的示例)
        ---
    schedules:
      - cron: '0 2 * * *'
        displayName: 'yourdisplayname'
        always: true
        branches:
          include:
            - main
    
    trigger: none
    
    stages:
      - stage: CheckDependencies
        displayName: 'dependabot run'
        jobs:
          - job: Dependabot
            displayName: 'Run Dependabot'
            pool:
              vmImage: 'ubuntu-latest'
            steps:
              - task: AzureKeyVault@2
                inputs:
                  connectedServiceName: 'name'
                  keyVaultName: 'kvname'
                  secretsFilter: 'azureDevOpsAccessToken'
                  runAsPreJob: true
    
              - task: dependabot@1
                inputs:
                  azureDevOpsAccessToken: '$(azureDevOpsAccessToken)'  
    
              - task: dependabot@1
                inputs:
                  packageManager: 'nuget'
                  targetBranch: 'refs/heads/main'

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