bitbucket和github的简单比较

我本身比较偏爱Python,以及用Python所写的分布式版本控制工具 Hg
曾经的Git让我倍感挫折。
好在现如今已经有了 TortoiseHgTortoiseGit
对于那些熟悉乌龟 svn 的人来说是个福音。

先前由于比较熟悉hg,所以一直用 Hg 界内流行的代码托管网站 bitbucket.org
最近又重新体验了一把(去年体验过,倍感受挫) Git 界流行的 github.com,感觉很是舒爽。
于是简单的对比了两个网站。
这两个网站有很重要的特点,是社区化。
你可以follow你所关注的人和项目。这点让人觉得很有趣。
虽然 Google Code 也已经支持 Hg 代码托管,然而显得严谨了,
所以我没使用过hg版,只用过svn,故不参与比较。

bitbucket 和 github 的比较
bitbucket.org github.com
免费仓库个数 无限
HTTPS推送 √ 便捷 我从没有成功过 *
免费套餐容量 √ 1GB 0.3GB
私有仓库 √ 无限! 没有
最便宜套餐 √ $5/month $7/month
二级域名个人主页 ** √ 即时完成 等待10分钟
域名长度 较长 √ 较短
域名记忆难度 较困难 √ 较简单
代码片段工具 Gist
界面语言 只有英语 √ 有简体中文
界面美观度 *** 一般 √ 美观
中文社区活跃度 未知

* github貌似是支持https推送的,但我总是失败,只能导入key后通过ssh提交。
** 你只需要在各自的仓库中建立一个名为 username.bitbucket.org 或 username.github.com 的代码仓库即可
*** 美观度什么的个人观点,请勿拍砖

两个网站真是平分秋色,各有各的好。
bitbucket 的硬实力更棒,而 github 的软实力更强。
具体用哪个呢,自己分析下自己的需求吧。

欢迎留言,好更新或完善一些比较的条目。

让服务器自动从Hg版本库中下载代码

每次写完代码,提交到版本库,测试可以执行不会冲突,推到远端代码仓库。之后要发布的话,还要通过FTP上传到服务器上,FTP速度又不很理想,严重影响工作效率。

有没有解决之道?有!

直接让服务器从代码仓库中下载代码不就行了么?代码仓库中已经包含最新代码了,让服务器从代码仓库的服务器远程下载代码,方便快捷全自动!

而且,现在用的是hg,而不是svn。svn有个问题,提交的代码可能是未完成的半成品导致程序无法执行。而hg的好处是半成品可以提交在本地,阶段性成果完成后再往远端代码仓库中提交。

下面就以使用BitBucket为例,其他服务大同小异。

编译 hg

首先需要在服务器端编译一份 hg ,编译起来还是很方便的,直接从官网下载一份源码,解压缩后make && make install 一下就行了。他源码包里的README里就这么写的。

Mercurial/Hg 下载地址

第一次clone

第一次使用需要先clone一份代码仓库到本地,以后就可以简单的使用pull命令获取更新了。
所以第一次使用需要 hg clone <你的仓库地址>
仓库地址可以在 BitBucket里的项目里找到。

编写 PHP

然后在服务器端写一个文件up.php,放在需要更新的目录下面, 如下代码:

passthru(“/< hg命令行工具的绝对地址>/hg pull -u https://<你的用户名>:<你的密码>@<你的代码仓库地址>“);

以我的空间为例,就是:

passthru(“/home/shawphy/bin/hg pull -u https://shawphy:******@bitbucket.org/shawphy/test/”);

其中最关键的一步是要把密码也写在URL里,否则的话就得用popen()函数来处理密码交互了,比较麻烦。

这样,只要访问这个php文件,就能更新这个网站了。

配置Hook

然后,只需要在 BitBucket 项目管理中,Admin标签里,右边Additional options/settings面板下找到Services,点进去。然后添加一个POST服务,URL地址就填写你那个PHP文件的地址就可以了。

这样就能实现往代码仓库中提交代码后,网站服务器自动下载并更新代码了。

其他

如果要自己搭建的服务器上配置的话,参考 Hg 官方Wiki