gpt4 book ai didi

javascript - 如何使用 GitHub API 和 Octokit JavaScript 将大于 1mb 的文件提交到 GitHub

转载 作者:行者123 更新时间:2023-12-02 23:53:14 26 4
gpt4 key购买 nike

我需要通过客户端浏览器应用程序中运行的 JavaScript 更新 GitHub 上的文件。该文件可能大于 1mb,因此我无法使用 octokit createFile() 函数,该函数仅限于小于 1mb 的文件。

我有一个通过 oauth 进行身份验证的用户、一个文件以及该文件最终需要存放的存储库。基本上我有:

this.octokit = new Octokit();
this.octokit.authenticate({
type: "oauth",
token: github.access_token
})
this.file = "some text in a string thing";
this.octokit.repos.getContents({
owner: this.currentUser,
repo: this.currentRepoName,
path: path
}).then(thisRepo => {

我需要弄清楚如何将 this.file 的内容放入该存储库根文件夹中的文件(例如 project.STL)中。

我发现这个很棒blog post描述了该过程如何使用 octokit 库的 ruby​​ 版本进行工作。我对 ruby 没有任何经验,所以了解那里发生的事情需要我一些时间。这似乎是一个足够常见的问题,应该有一个 JavaScript 解决方案的示例。我希望任何人都可以提供有关将文件从 JavaScript 上传到 GitHub 的任何帮助,如果我能开始工作作为示例,我将发布我的解决方案。

最佳答案

编辑:我重写了它的工作原理,我认为这样更好:

async createCommit (octokit, { 所有者, 存储库, 基础, 更改 }) { 让响应;

  if (!base) {
response = await octokit.repos.get({ owner, repo })
base = response.data.default_branch
}

response = await octokit.repos.listCommits({
owner,
repo,
sha: base,
per_page: 1
})
let latestCommitSha = response.data[0].sha
const treeSha = response.data[0].commit.tree.sha

response = await octokit.git.createTree({
owner,
repo,
base_tree: treeSha,
tree: Object.keys(changes.files).map(path => {
return {
path,
mode: '100644',
content: changes.files[path]
}
})
})
const newTreeSha = response.data.sha

response = await octokit.git.createCommit({
owner,
repo,
message: changes.commit,
tree: newTreeSha,
parents: [latestCommitSha]
})
latestCommitSha = response.data.sha

await octokit.git.updateRef({
owner,
repo,
sha: latestCommitSha,
ref: `heads/master`,
force: true
})

console.log("Project saved");

}

关于javascript - 如何使用 GitHub API 和 Octokit JavaScript 将大于 1mb 的文件提交到 GitHub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55548359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com