回答
Github上提供了一个Git database API,让您可以访问读取和写入原始对象,并列出和更新您的引用(分支头和标签)。为了更好地理解这个话题,我强烈建议你阅读Pro Git书的Git Internals一章。
按文档,这是一个7个步骤的过程要提交修改到你的资料库文件:
- 得到当前commit对象
- 检索它指向的树
- 检索树对该特定文件路径的blob对象的内容
- 以某种方式更改内容并使用该新内容发布新的blob对象,获得blob SHA返回
- 发布新文件路径指针替换新文件路径指针SHA获取树SHA SHA
- 创建一个新的提交对象,包含当前提交SHA作为父代和新树SHA,获取提交SHA返回
- 更新您的分支点的新基准提交SHA
你可以看到,如果新的更新GitHub CRUD API (May 2013)可以帮助
的repository contents API已经允许读取文件一会儿。现在,您可以轻松地将更改提交到单个文件,就像您在Web UI中所做的一样。
从今天开始,这些方法都可以给你:
我在Google App Engine (GAE)所以旁边的蟒蛇,我可以create一个新的文件,它update,甚至delete it经提交,并在PHP,JAVA推到我的GitHub库与GitHub API v3去。
检查和审查一些可用的第三方libraries创建像在Perl中提出的example script的,我会建议使用以下方法:
- PyGithub(蟒蛇)
- (PHP)
- GitHub API for Java(JAVA)
- go-github(GO)
如您所知,您可以为每个GitHub帐户和组织提供一个站点,以及无限制的项目站点,其中网站直接从您的仓库托管,并且默认为Jekyll。
结合Jekyll,Webhooks,并在GAE的API GitHub的脚本,用适当的GAE Setting一起,它会给你一个广泛的可能性,像calling external script并在GitHub上创建一个动态页面。
除了GAE,还有一个选项在Heroku上运行。使用JekyllBot,它位于(免费)Heroku实例上,为silently生成每个帖子的JSON文件并将更改推回到GitHub。
我一直对此感到好奇,但还没有找到一个适用于V3 API的解决方案。
但是我wrote a blog post along with code有关如何做到这一点使用Node.js的
这是一个完整的片段:
def push_to_github(filename, repo, branch, token):
url="https://api.github.com/repos/"+repo+"/contents/"+filename
base64content=base64.b64encode(open(filename,"rb").read())
data = requests.get(url+'?ref='+branch, headers = {"Authorization": "token "+token}).json()
sha = data['sha']
if base64content.decode('utf-8')+"\n" != data['content']:
message = json.dumps({"message":"update",
"branch": branch,
"content": base64content.decode("utf-8") ,
"sha": sha
})
resp=requests.put(url, data = message, headers = {"Content-Type": "application/json", "Authorization": "token "+token})
print(resp)
else:
print("nothing to update")
token = "lskdlfszezeirzoherkzjehrkzjrzerzer"
filename="foo.txt"
repo = "you/test"
branch="master"
push_to_github(filename, repo, branch, token)
- 1. 使用JGit提交并推送到GitHub - 裸回购?
- 2. GitHub v3 API - 如何在存储库中创建初始提交?
- 3. Github API v3提交blob
- 4. Github的API创建提交
- 5. 如何使用GitHub V3 API获取repo的提交计数?
- 6. Github v3 API - 创建REPO
- 7. github api v3创建树php
- 8. 推回到Github的提交
- 9. GitHub v3 API:如何为我闪亮的新存储库创建初始提交?
- 10. 通过webhook提交并推送到远程git回购?
- 11. GitHub - 开始创建回购
- 12. 使Openshift V3与Github回购连接
- 13. 不能推到提交叉状回购
- 14. 在github回购分支中提交
- 15. GitHub API - 写回购
- 16. GitHub API提交
- 17. 提交github API
- 18. github v3 api创建注释失败
- 19. 叉github回购,并推到我的私人回购
- 20. 推送github回购否认
- 21. Git回购自动提交和推
- 22. 无法使用Github API v3
- 23. 在github中,如何创建合并请求只提交1次
- 24. git提交并推入IntelliJ
- 25. 计数并在Github上分析组织提交(不回购)
- 26. 如何设置并向github推送回购?
- 27. 创建使用GitHub的API
- 28. GitHub,git,如何提交更改上游回购
- 29. 如何从我的回购库中删除GitHub上的提交?
- 30. 如何从远程github回购清理所有提交
这是最容易的解决方案。您可以在这里找到图书馆:http://developer.github.com/libraries/#python – timaschew 2014-01-24 10:56:49