Heim > Backend-Entwicklung > Golang > Tree SHA ist kein Baumobjektfehler in der Go-Github-Bibliothek

Tree SHA ist kein Baumobjektfehler in der Go-Github-Bibliothek

王林
Freigeben: 2024-02-09 14:00:11
nach vorne
502 Leute haben es durchsucht

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

Bei Verwendung der Go-Github-Bibliothek kann ein Fehler namens „Tree SHA ist kein Baumobjekt“ auftreten. Dieser Fehler tritt auf, weil der von Ihnen angegebene SHA-Wert kein gültiges Baumobjekt ist. Normalerweise kann dieser Fehler durch eine nicht vorhandene Datei oder ein nicht vorhandenes Verzeichnis, einen falschen SHA-Wert oder ein anderes Problem verursacht werden. Um dieses Problem zu beheben, können Sie überprüfen, ob der von Ihnen angegebene SHA-Wert korrekt ist, und sicherstellen, dass die entsprechende Datei oder das entsprechende Verzeichnis vorhanden ist. Wenn das Problem weiterhin besteht, können Sie die Dokumentation des Go-Github-Repositorys überprüfen oder um Hilfe für weitere Lösungen bitten. PHP-Redakteur Yuzi hofft, dass diese kurze Anleitung für Sie hilfreich sein wird!

Frageninhalt

Ich versuche, mit go-github einen leeren Commit in Github zu erstellen.

Der folgende Code:

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
}
Nach dem Login kopieren

Fehlgeschlagen

newcommitresponse, _, err := client.git.createcommit(ctx, owner, repo, newcommit)
Nach dem Login kopieren

und

422 Tree SHA is not a tree object []
Nach dem Login kopieren

Ich kann nirgends relevante Informationen zu diesem Fehler finden.

Irgendwelche Ideen?

Problemumgehung

Wenn Sie Git CLI verwenden, führt Git selbst eine „sinnvolle“ Übersetzung aus – zum Beispiel: Ersetzen Sie das Commit durch das SHA des relevanten Baums.

Mit dieser untergeordneten API müssen Sie diese Konvertierung explizit durchführen.

Mit go-github können Sie dies mit einer zusätzlichen Abfrage tun:

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

treeSHA := commit.GetTree().GetSHA()
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonTree SHA ist kein Baumobjektfehler in der Go-Github-Bibliothek. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage