我正在构建一个我希望能够从 git 更新的程序。我可以将这些文件与 raw.githubusercontent.com 进行比较,如果它们不同,则将它们拉出。但是,如果文件被添加到存储库而不是仅仅更改,程序将不知道检查该 url。有没有办法从 GitHub 获取存储库中所有文件的列表进行检查?
顺便说一句,我没有使用 GitHub API,因为我不希望在分布式程序中包含我的 API 令牌,或者强制用户拥有自己的 GitHub 帐户。如果有一种方法可以在不包含令牌的情况下从 git 下载 repo,我也会接受它作为解决方案。
Git 提供git-ls-remote,但您不能使用该功能来获取目录列表。因此,获取列表的唯一方法是使用 Github API 或 Web 界面。而且您不需要任何 API 令牌来获取公共存储库的内容:
$ curl https://api.github.com/repos/lassana/continuous-audiorecorder/contents/
[
{
"name": ".gitignore",
"path": ".gitignore",
"sha": "7f6dd1b098cedd0b87abcdf09e5d638d49dbd312",
"size": 338,
"url": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/.gitignore?ref=master",
"html_url": "https://github.com/lassana/continuous-audiorecorder/blob/master/.gitignore",
"git_url": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/blobs/7f6dd1b098cedd0b87abcdf09e5d638d49dbd312",
"download_url": "https://raw.githubusercontent.com/lassana/continuous-audiorecorder/master/.gitignore",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/.gitignore?ref=master",
"git": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/blobs/7f6dd1b098cedd0b87abcdf09e5d638d49dbd312",
"html": "https://github.com/lassana/continuous-audiorecorder/blob/master/.gitignore"
}
},
{
"name": "LICENSE",
"path": "LICENSE",
"sha": "9be97c167682f638144ea1fe1b3d756394a91c37",
"size": 1304,
"url": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/LICENSE?ref=master",
"html_url": "https://github.com/lassana/continuous-audiorecorder/blob/master/LICENSE",
"git_url": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/blobs/9be97c167682f638144ea1fe1b3d756394a91c37",
"download_url": "https://raw.githubusercontent.com/lassana/continuous-audiorecorder/master/LICENSE",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/LICENSE?ref=master",
"git": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/blobs/9be97c167682f638144ea1fe1b3d756394a91c37",
"html": "https://github.com/lassana/continuous-audiorecorder/blob/master/LICENSE"
}
},
{
"name": "README.md",
"path": "README.md",
"sha": "2b8fd57a2ec70af5fbfcf3c1377217e3f99b880c",
"size": 2108,
"url": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/README.md?ref=master",
"html_url": "https://github.com/lassana/continuous-audiorecorder/blob/master/README.md",
"git_url": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/blobs/2b8fd57a2ec70af5fbfcf3c1377217e3f99b880c",
"download_url": "https://raw.githubusercontent.com/lassana/continuous-audiorecorder/master/README.md",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/README.md?ref=master",
"git": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/blobs/2b8fd57a2ec70af5fbfcf3c1377217e3f99b880c",
"html": "https://github.com/lassana/continuous-audiorecorder/blob/master/README.md"
}
},
{
"name": "build.gradle",
"path": "build.gradle",
"sha": "f7a7ae7e2e8d616549aa5f3dcb92fb6986d58420",
"size": 99,
"url": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/build.gradle?ref=master",
"html_url": "https://github.com/lassana/continuous-audiorecorder/blob/master/build.gradle",
"git_url": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/blobs/f7a7ae7e2e8d616549aa5f3dcb92fb6986d58420",
"download_url": "https://raw.githubusercontent.com/lassana/continuous-audiorecorder/master/build.gradle",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/build.gradle?ref=master",
"git": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/blobs/f7a7ae7e2e8d616549aa5f3dcb92fb6986d58420",
"html": "https://github.com/lassana/continuous-audiorecorder/blob/master/build.gradle"
}
},
{
"name": "drone-io.sh",
"path": "drone-io.sh",
"sha": "171868e680890535aa3006dafa885f36a1ba4c8b",
"size": 660,
"url": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/drone-io.sh?ref=master",
"html_url": "https://github.com/lassana/continuous-audiorecorder/blob/master/drone-io.sh",
"git_url": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/blobs/171868e680890535aa3006dafa885f36a1ba4c8b",
"download_url": "https://raw.githubusercontent.com/lassana/continuous-audiorecorder/master/drone-io.sh",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/drone-io.sh?ref=master",
"git": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/blobs/171868e680890535aa3006dafa885f36a1ba4c8b",
"html": "https://github.com/lassana/continuous-audiorecorder/blob/master/drone-io.sh"
}
},
{
"name": "gradle",
"path": "gradle",
"sha": "f41799c99d13e934de8e71fc039ee5982ed89875",
"size": 0,
"url": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/gradle?ref=master",
"html_url": "https://github.com/lassana/continuous-audiorecorder/tree/master/gradle",
"git_url": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/trees/f41799c99d13e934de8e71fc039ee5982ed89875",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/gradle?ref=master",
"git": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/trees/f41799c99d13e934de8e71fc039ee5982ed89875",
"html": "https://github.com/lassana/continuous-audiorecorder/tree/master/gradle"
}
},
{
"name": "gradlew",
"path": "gradlew",
"sha": "91a7e269e19dfc62e27137a0b57ef3e430cee4fd",
"size": 5080,
"url": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/gradlew?ref=master",
"html_url": "https://github.com/lassana/continuous-audiorecorder/blob/master/gradlew",
"git_url": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/blobs/91a7e269e19dfc62e27137a0b57ef3e430cee4fd",
"download_url": "https://raw.githubusercontent.com/lassana/continuous-audiorecorder/master/gradlew",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/gradlew?ref=master",
"git": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/blobs/91a7e269e19dfc62e27137a0b57ef3e430cee4fd",
"html": "https://github.com/lassana/continuous-audiorecorder/blob/master/gradlew"
}
},
{
"name": "gradlew.bat",
"path": "gradlew.bat",
"sha": "8a0b282aa6885fb573c106b3551f7275c5f17e8e",
"size": 2314,
"url": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/gradlew.bat?ref=master",
"html_url": "https://github.com/lassana/continuous-audiorecorder/blob/master/gradlew.bat",
"git_url": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/blobs/8a0b282aa6885fb573c106b3551f7275c5f17e8e",
"download_url": "https://raw.githubusercontent.com/lassana/continuous-audiorecorder/master/gradlew.bat",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/gradlew.bat?ref=master",
"git": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/blobs/8a0b282aa6885fb573c106b3551f7275c5f17e8e",
"html": "https://github.com/lassana/continuous-audiorecorder/blob/master/gradlew.bat"
}
},
{
"name": "recorder",
"path": "recorder",
"sha": "6ef2ce50d4304ab2e5a069d494a3061ea49b08fc",
"size": 0,
"url": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/recorder?ref=master",
"html_url": "https://github.com/lassana/continuous-audiorecorder/tree/master/recorder",
"git_url": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/trees/6ef2ce50d4304ab2e5a069d494a3061ea49b08fc",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/recorder?ref=master",
"git": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/trees/6ef2ce50d4304ab2e5a069d494a3061ea49b08fc",
"html": "https://github.com/lassana/continuous-audiorecorder/tree/master/recorder"
}
},
{
"name": "sample",
"path": "sample",
"sha": "dd4460e7d22d1b4d5e659315e8bedd3de240dc3b",
"size": 0,
"url": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/sample?ref=master",
"html_url": "https://github.com/lassana/continuous-audiorecorder/tree/master/sample",
"git_url": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/trees/dd4460e7d22d1b4d5e659315e8bedd3de240dc3b",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/sample?ref=master",
"git": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/trees/dd4460e7d22d1b4d5e659315e8bedd3de240dc3b",
"html": "https://github.com/lassana/continuous-audiorecorder/tree/master/sample"
}
},
{
"name": "settings.gradle",
"path": "settings.gradle",
"sha": "1a32e417c62b4ae544744249dcb4fecfa7b95fc8",
"size": 30,
"url": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/settings.gradle?ref=master",
"html_url": "https://github.com/lassana/continuous-audiorecorder/blob/master/settings.gradle",
"git_url": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/blobs/1a32e417c62b4ae544744249dcb4fecfa7b95fc8",
"download_url": "https://raw.githubusercontent.com/lassana/continuous-audiorecorder/master/settings.gradle",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/lassana/continuous-audiorecorder/contents/settings.gradle?ref=master",
"git": "https://api.github.com/repos/lassana/continuous-audiorecorder/git/blobs/1a32e417c62b4ae544744249dcb4fecfa7b95fc8",
"html": "https://github.com/lassana/continuous-audiorecorder/blob/master/settings.gradle"
}
}
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4375 次 |
| 最近记录: |