Tidak dapat membuat komitmen dengan go-github dan 422 - kemas kini tidak pantas

PHPz
Lepaskan: 2024-02-09 17:12:19
ke hadapan
732 orang telah melayarinya

无法使用 go-github 和 422 创建提交 - 更新不是快进

Editor PHP Xiaoxin menghadapi masalah semasa menggunakan go-github: semasa membuat penyerahan, ralat 422 telah berlaku dan ia menggesa "Kemas kini bukan ke hadapan pantas". Apakah punca khusus masalah ini? Bagaimana untuk menyelesaikannya? Seterusnya, kami akan memberi anda jawapan terperinci.

Kandungan soalan

Saya menggunakan fungsi berikut untuk hanya membuat komitmen baharu dalam cawangan menggunakan go-github perpustakaan

func ghapicreatecommit(ctx context.context, client *github.client, commitopts *commitoptions) error {
    // get the reference of the branch
    ref, _, err := client.git.getref(ctx, repoowner, commitopts.repo, "refs/heads/"+commitopts.branch)
    if err != nil {
        return err
    }
    commit, _, err := client.git.getcommit(ctx, repoowner, commitopts.repo, *ref.object.sha)
    if err != nil {
        return err
    }

    commit.message = github.string(commitopts.commitmessage)

    // create a new commit with the updated commit message
    newcommit, _, err := client.git.createcommit(ctx, repoowner, commitopts.repo, commit)
    if err != nil {
        return err
    }
    // attach the new commit to the reference
    ref.object.sha = newcommit.sha

    // update the branch reference to point to the new commit
    _, _, err = client.git.updateref(ctx, repoowner, commitopts.repo, ref, false)
    if err != nil {
        return err
    }

    return nil
}
Salin selepas log masuk

Operasi ini gagal:

PATCH https://api.github.com/repos/MyOrg/myrepo/git/refs/heads/the-branch-I-am-creating-the-new-commit-to: 422 Update is not a fast forward []
Salin selepas log masuk

Kenapa tidak pantas ke hadapan? Ia hanyalah komit baharu yang dibuat daripada cawangan/komit sedia ada.

ps: Saya sudah pasti tidak ingin fail baharu dibuat atas komitmen.

Penyelesaian

func (s *gitservice) createcommit(ctx context.context, owner string, repo string, commit *commit) (*commit, *response, error)
Salin selepas log masuk

Parametercommit用于指定新commit的一些信息,包括新commit的parents (lihat Pelaksanaan).

Dalam kod anda, komit baharu dan komit lama mempunyai komit yang sama parents,因此这不是快进推送到分支。为了使其快速推送到分支,新提交的 parents harus menunjuk ke komit lama.

Saya rasa perubahan berikut akan menjadikannya pantas ke hadapan:

+ commit.Parents = []*github.Commit{commit}
  newCommit, _, err := client.Git.CreateCommit(ctx, repoOwner, commitOpts.Repo, commit)
Salin selepas log masuk

Atas ialah kandungan terperinci Tidak dapat membuat komitmen dengan go-github dan 422 - kemas kini tidak pantas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!