使用Github合作开发项目

本文大部分内容来自: https://help.github.com/categories/63/articles Github上合作开发最好的方式是“Fork + Pull Request”。比如我最近需要一个静态Blog生成器,市面上有很多Ruby实现的,但我想要一个Go语言的实现,Github上找到了一个 https://github.com/wendal/gor ,测试了一下已有的功能基本能满足了,就用上了。 但实际使用过程中发现了一个问题,如果在URL中有中文,生成的URL如下没有做URL安全编码: http://hugozhu.myalert.info/2013/02/27/在Pi和Github上搭建自己的个人博客.html 还有一种情况是如果URL中有空格,如: http://hugozhu.myalert.info//2013//02/25/Java properties to enviorment variables.html 浏览器遇到这种URL时,会主动进行编码,但这里有两个问题: 遇到中文时,浏览器是用GBK还是UTF-8还是其它字符集编码后再发送给服务器呢? 遇到空格时,编码成+还是%20呢? 不同浏览器实现可能不一样,在不同操作系统上也可能不一样(可能和用户设置的缺省语言有关),这样有些用户可能会遭遇404错误了,实际上我在服务器的错误日志上的确看到这样的错误 日志: 2013/02/27 20:41:33 [error] 7791#0: *3285 open() ".../2013/02/25/Java+properties+to+enviorment+variables.html" failed (2: No such file or directory), client: 221.179.193.78, server: hugozhu.myalert.info, request: "GET /2013/02/25/Java+properties+to+enviorment+variables.html HTTP/1.1", host: "hugozhu.myalert.info" 于是我需要动手修改代码: 首先需要做的就是Fork一下原项目到自己的代码仓库: https://github.com/hugozhu/gor 修改好代码并提交到自己的仓库: https://github.com/hugozhu/gor/commit/db2784623d9df4d0652436efdbfbb9caccdc1e1d 在你的代码仓库页面上点Pull Request: 选择好你刚提交好的Commits,然后点发送; 原项目的维护者就会收到这个Pull Request: https://github.com/wendal/gor/pull/14 如果你提交的代码足够好,维护者可以合并到项目主干上; 记住下一次本地修改代码前要先Merge一下原作者新提交的改动; 如下: git remote add upstream https://github.com/wendal/gor git fetch upstream git checkout master git merge upstream/master 到此为止就完成了一次合作开发。 [Read More]

在Pi和Github上搭建自己的个人博客

方法如下: 本站同时托管在家里的Raspberry Pi和Github Pages上,并同步保持更新,海外用户会访问Github,国内用户则会访问Pi,不同线路解析域名hugozhu.myalert.info到不同的服务器是通过DnsPod的服务实现的,这么好的服务还是免费的,这里推荐一下。 因为Github Pages只能支持静态网页,你需要一个能生成静态网页的博客生成引擎。我使用的是gor , 也可以使用ruhoh,Google一下还有很多。 静态页面博客的好处: 性能是最好的,很合适用Raspberry Pi来做服务器,节省资源; 文章可以用Markdown格式来编写,采用Github来做版本控制,我的Blog仓库在 http://github.com/hugozhu/blog ,数据安全很好,误删除也不担心了; 很容易找到托管环境,方便迁移; 用Gor在Pi上生成速度很快;再用Nginx提供Web服务,可以直接在Pi上写Blog; 大繁至简 Github设置 在你的仓库里增加一个your_github_id.github.com,比如我的github ID是hugozhu,相应的仓库名就是hugozhu.github.com,这个仓库也就是网站的根目录了,在这里放生成好的静态文件 如果你需要用自己的域名,而不是Github提供的,可以在根目录下增加一个CNAME文件,文件内容则是你的域名,在DnsPod上需要建一个CNAME记录,将你的域名指向your_github_id.github.com. 也就是github原来分配给你的,完成这个设置后,访问your_github_id.github.com会跳转到你的域名; 每次更新后,Github会在10分钟内生效。 更新博客 Gor的使用详细说明可见 https://github.com/wendal/gor 我的整个网站的内容也通过Github开源了: https://github.com/hugozhu/blog 以我的网站为例: git clone https://github.com/hugozhu/blog Cloning into 'blog'... remote: Counting objects: 190, done. remote: Compressing objects: 100% (146/146), done. remote: Total 190 (delta 81), reused 132 (delta 23) Receiving objects: 100% (190/190), 155.48 KiB | 171 KiB/s, done. Resolving deltas: 100% (81/81), done. cd blog gor compile 2013/02/27 13:17:19 gor. [Read More]