首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Bitbucket中生成git合并提交引用

在Bitbucket中生成git合并提交引用
EN

Stack Overflow用户
提问于 2022-10-27 12:42:57
回答 1查看 31关注 0票数 0

在我们的Jenkins任务中,我们依赖于Bitbucket的一个实现细节,即拉请求合并提交,它可以使用pull-requests/*/merge访问。

Bitbucket有放弃对3路合并的支持,因此我们无法运行:

代码语言:javascript
复制
        if (isPR(config.BRANCH)) {
            echo 'In PR type commit'
            PR_ID=parsePRId(config.BRANCH)
            TARGET_COMMIT="pull-requests/$PR_ID/merge"
            FROM_COMMIT="pull-requests/$PR_ID/from"
        } else {
            echo 'Non PR type commit'
            TARGET_COMMIT=config.BRANCH
            FROM_COMMIT=config.BRANCH
        }

        // Fetch hash of from commit for marking build status
        sh "git fetch origin $FROM_COMMIT"
        result.branch = config.BRANCH
        result.fromCommitId = sh(returnStdout: true, script: "git rev-parse FETCH_HEAD").trim()
        result.fromCommitIdShort = sh(returnStdout: true, script: "git rev-parse --short FETCH_HEAD").trim()

        try {
            // Checkout target commit
            sh """
                git fetch origin $TARGET_COMMIT && \
                git checkout -f FETCH_HEAD
            """
            result.targetCommitId = sh(returnStdout: true, script: "git rev-parse FETCH_HEAD").trim();
            result.targetCommitIdShort = sh(returnStdout: true, script: "git rev-parse --short FETCH_HEAD").trim();
        } catch (Exception err) {
            result.targetCommitId = null
            result.targetCommitIdShort = null
        }

除了这样做,还有其他选择吗?最终目标是签出在monorepo中构建/部署微服务的拉请求。

EN

回答 1

Stack Overflow用户

发布于 2022-11-01 08:13:29

我通过创建一个沉重的结帐来解决这个问题。这还需要更好的测试。

代码语言:javascript
复制
           if (isPR(config.BRANCH)) {
                echo 'In PR type commit'
                PR_ID=parsePRId(config.BRANCH)
                FROM_COMMIT="pull-requests/$PR_ID/from"
                /* this is needed because bitbucket dropped support for PR merge refs 
                    more info in https://jira.dna.fi/browse/CXA-1509
                */
                sh """
                    git checkout origin/master && \
                    git checkout -b interim && \
                    git merge "origin/${env.CHANGE_BRANCH}"
                """
                def interimCommit = sh(returnStdout: true, script: "git rev-parse HEAD").trim();

                TARGET_COMMIT = interimCommit
            } 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74222246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档