手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

工具介绍: 让服务器自动从Hg版本库中下载代码

首页 > Software >

以前,为了保证本地的代码与服务器一样,一般都是采用sVN+分支,审核并最后推送到服务器的。当然,也有服务器从svn服务器拉数据的时候。当然这样配置起来是有点繁琐,但还算能用。
shawphy推荐的这个工具,感觉好象不错。如果有兴趣,大家可以尝试尝试。
以下就是shawphy写的文章:让服务器自动从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,放在需要更新的目录下面, 如下代码:

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

以我的空间为例,就是:

  1. 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

---EOF---
用这种类似的工具的好处就是不怕文件改动再多,也会上传修改后的。如果没有版本控制,恐怕代码会乱的一塌糊涂吧,而且,如果有多人同时修改文件,最后会更迷茫。不过总算有这些解决之道。听说GIT不错,还没有研究过。。。




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

Tags: program, debug, svn, hg

« 上一篇 | 下一篇 »

只显示10条记录相关文章

RabbitVCS 用后感 (浏览: 30160, 评论: 0)
使用GIT进行版本控制 (浏览: 29545, 评论: 3)
svn ignore 命令行用法 (浏览: 28770, 评论: 1)
如何调试JS错误 (浏览: 28768, 评论: 0)
Linux环境下配置同步更新的SVN服务器 (浏览: 28262, 评论: 1)
svn常用命令 (浏览: 26900, 评论: 0)
svn: E220001: Unreadable path encountered; access denied (浏览: 25182, 评论: 0)
SVN提交更新的一个准则 (浏览: 25103, 评论: 0)
Linux下清除.svn目录 (浏览: 24906, 评论: 0)
SVN中文手册 (浏览: 24685, 评论: 0)

发表评论

评论内容 (必填):