Tree SHA bukan ralat objek pokok dalam pustaka go-github

王林
Lepaskan: 2024-02-09 14:00:11
ke hadapan
461 orang telah melayarinya

go-github 库中的 Tree SHA is not a tree object 错误

Apabila menggunakan pustaka go-github, anda mungkin menghadapi ralat yang dipanggil "Tree SHA bukan objek pokok". Ralat ini berlaku kerana nilai SHA yang anda berikan bukan objek pokok yang sah. Biasanya, ralat ini boleh disebabkan oleh fail atau direktori yang tidak wujud, nilai SHA yang salah atau beberapa isu lain. Untuk menyelesaikan isu ini, anda boleh menyemak sama ada nilai SHA yang anda berikan adalah betul dan memastikan fail atau direktori yang berkaitan wujud. Jika masalah berterusan, anda boleh menyemak dokumentasi repositori go-github atau meminta bantuan untuk penyelesaian selanjutnya. Editor PHP Yuzi berharap panduan ringkas ini akan membantu anda!

Kandungan soalan

Saya cuba membuat komit kosong dalam github menggunakan go-github.

Kod berikut:

func createheadbranchforpr(ctx context.context, basebranch, repo, owner string,
    client *github.client) (newbranch string, err error) {
    newbranch = createrandombranchname()
    basebranchref, _, err := client.git.getref(ctx, owner, repo, "heads/"+basebranch)
    if err != nil {
        return "", err
    }
    latestcommitsha := basebranchref.object.getsha()
    // create a new tree with no changes from the latest commit on the base branch
    newtree := &github.tree{
        sha: &latestcommitsha,
    }
    currenttime := time.now()
    newcommit := &github.commit{
        message: github.string("test commit"),
        tree:    newtree,
        parents: []github.commit{
            {
                sha: github.string(latestcommitsha),
            },
        },
        author: &github.commitauthor{
            name:  github.string(prcommitterauthorname),
            email: github.string(prcommitterauthoremail),
            date:  &currenttime,
        },
        committer: &github.commitauthor{
            name:  github.string(prcommitterauthorname),
            email: github.string(prcommitterauthorname),
            date:  &currenttime,
        },
        sha: &latestcommitsha,
    }
    newcommitresponse, _, err := client.git.createcommit(ctx, owner, repo, newcommit)
    if err != nil {
        return "", err
    }
    // create a new branch based on the new commit
    newbranchref := &github.reference{
        ref:    github.string("refs/heads/" + newbranch),
        object: &github.gitobject{sha: newcommitresponse.sha},
    }
    _, _, err = client.git.createref(ctx, owner, repo, newbranchref)
    if err != nil {
        return "", err
    }
    return newbranch, nil
}
Salin selepas log masuk

Gagal

newcommitresponse, _, err := client.git.createcommit(ctx, owner, repo, newcommit)
Salin selepas log masuk

dan

422 Tree SHA is not a tree object []
Salin selepas log masuk

Saya tidak dapat mencari sebarang maklumat yang berkaitan tentang ralat ini di mana-mana sahaja.

Ada idea?

Penyelesaian

Apabila anda menggunakan git cli, git sendiri akan menjalankan terjemahan "bermakna" - contohnya: gantikan komit dengan sha pokok yang berkaitan.

Menggunakan API peringkat rendah ini, anda mesti melakukan penukaran ini secara eksplisit.

Menggunakan go-github anda boleh melakukan ini dengan pertanyaan tambahan:

commit, _, err := client.Git.GetCommit(ctx, owner, repo, latestCommitSHA)
if err != nil {
   return "", err
}

treeSHA := commit.GetTree().GetSHA()
Salin selepas log masuk

Atas ialah kandungan terperinci Tree SHA bukan ralat objek pokok dalam pustaka go-github. 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!