[fabric]多种策略的工程同步


继续接上篇

理论上来说,rsync是最好的工程同步方式。只是和fabric自身的ssh登录没有整合,现在我找到了一个简单的解决方法。同时我也准备了其他两种方法:打包上传和远程svn update,这样加上不同步总共有四个部署策略。

解决rsync依赖主机名和密码的方法很简单:因为rsync是在本地运行,只要在rsync之前执行一个简单的远程命令就能获得主机名和密码。代码如下:

这里写死是密码登录了,理论还有证书登录,暂时不考虑。

打包上传的方式,改造自upload_project

使用临时文件。本地打包,上传到远程服务器。远程服务器上解压缩后删除,最后删除本地临时文件。

远程svn update方式

考虑到本地可能是git-svn而不是纯的svn,所以先判断远程代码代码是否是svn目录,如果不是则尝试从本地读取URL并在远程服务器上签出。如果是则直接执行svn update。

至此,个人认为工程同步这块算是基本完美了。若有更好的同步方法,欢迎指出。