从静态站点中托管的javascript运行git push

时间:2017-10-01 10:07:57

标签: javascript git jekyll github-pages

想象一下用jekyll编译并托管在github页面上的静态网站。是否有可能在此页面上有一些javascript,询问用户一些输入,然后“git push”此输入到一些github存储库?

换句话说,如何在javascript中编写以下程序:

  • 询问用户的姓名,将名称放在变量s
  • 从给定的github repo下载(或拉取)文本文件“allnames.txt”
  • 在allnames.txt
  • 的末尾添加s
  • 提交并将文件“allnames.txt”推回到github

当然,我了解潜在的安全风险,因为javascript代码需要嵌入私有ssh密钥。但这对于为静态网站添加动态性是一种有趣的方式,并且可能有人知道某些解决方案可以使其安全吗?

谢谢!

4 个答案:

答案 0 :(得分:2)

如果你知道git(blob,trees,commits)的内部结构,那么你应该能够使用GitHub REST API实现一个解决方案。这不会在5分钟内完成。至于安全性,您应该能够使用OAuth,因此不需要私有的ssh密钥。

查看:https://developer.github.com/v3/git/

答案 1 :(得分:2)

使用GitHub API的替代方法,您可以使用JavaScript编写的git客户端之一在浏览器中执行上述操作。

以下是一些例子:

https://github.com/creationix/js-git

https://github.com/danlucraft/git.js

答案 2 :(得分:2)

查看Staticman

来自Staticman网站:

  

Staticman为您处理用户生成的内容,并将其转换为GitHub存储库中的数据文件以及其他内容。

     

Staticman与GitHub页面上托管的Jekyll网站完美配合,因为推送到您的主分支将自动重新生成该网站。如果您希望在条目发布之前对其进行审核,则会创建一个拉取请求供您批准;否则,文件将立即推送到您的主分支。

答案 3 :(得分:1)

Ivan Zuzak的一篇老帖描述了他如何使用Github评论构建动态评论系统(source)。我最近使用一些额外的服务重新创建了他描述的系统(使用Github问题进行评论):Zapier,Zapier Github集成和Zoho forms的免费版本。这使我能够通过Zapier让自定义webform向Github问题提交数据(所以不要求用户创建Github帐户)。

我在我的博客上使用Github问题作为评论,但您可以使用相同的解决方案来处理其他内容(例如您的名单)。