上篇文章已经提供了5种软体的准备(你可以很顺利的通过那些链接分别下载下他们来)。
好吧,开始教程:
1、我们先从VisualSVN开始,默认情况下,它是被安装在C:\Program Files\VisualSVN Server目录下,进入之后你在此目录下会看到一个bin目录,我们暂且记下这个目录:C:\Program Files\VisualSVN Server\bin
2、我喜欢在D盘下安装一些SDK和XAMPP等数据或程序,所以我的SVN版本库安装在了D盘根目录下D:\Repositories,在这个目录下,就是我用SVN控制的一些程序,因为我是想给我的faceblog这款主题添加hook进行本地与虚拟主机的同步更新,所以进入我的wp-themes版本库即D:\Repositories\wp-themes,在这个目录下你将会看到有个名为hooks的目录(文件夹),打开它之后你将会看见很多以tmpl为后缀的文件,这是一些模板文件,我们复制一份post-commit.tmpl到post-commit.bat,并清空里面的文本内容。
3、在D盘根目录下,新建一个名为svn_sync_blog的文件夹,简单的意思就是:SVN同步博客。我们将之前下载的php-ftp-client、php-svn-client、php-svn-hooks解压之后放在这个目录(文件夹)下面,解压之后应该都是同命的文件夹,至于VisualSVN和tortoisesvn安装,下载下来之后双击鼠标就可以一路next下去就ok了,就不罗嗦了。
4、前面三步已基本部署完成,现在需要做的,就是做一些配置工作,用记事本编辑器打开第2步新建的post-commit.bat文件,粘贴下面的代码进去:
set PATH=D:\Xampp\php;%PATH% php "D:\svn_syn_blog\php-svn-hooks\post-commit.php" %1 %2 "config.php"
注意蓝色标注部分,为本地的php 目录,我装的是集成包xampp所以就是这个目录,红色部分为要执行的php文件,此文件会引入php-svn-client类通过它来读取svn更新日志,并且引入php-ftp-client类通过它来上传或删除(svn的基本操作都有了)svn更新日志中变更的文件,感觉这个文件比较重要,后面紧跟了三个参数,前两个%1 %2是svn传入的参数,第三个是配置文件的地址,因为config.php和post-commit.php在同一个文件下,所以只需填写文件名就可以了。
5、用文本编辑器打开D:\svn_syn_blog\php-svn-hooks目录下的config.php文件,这是个配置文件,如下所示:
return array( 'svn' => array( // 工作目录 'workspace' ='D:\Xampp\htdocs\wordpress\wp-content\themes\faceblog', // svn bin文件夹绝对路径,若此文件夹已包含在环境变量中,可以不设置 'bin' ='C:\Program Files\VisualSVN Server\bin' ), 'ftp' => array( // 服务器 'server' = '空间IP地址', // 用户名 'username' = 'ftp用户名', // 密码 'password' = 'ftp密码', // 同步的目录, 'sync_root' = '/domains/crossyou.cn/public_html/wp-content/themes/faceblog/' ), );
上面蓝色标注部分,我的本地工作目录,即faceblog主题目录(svn 地址其实是:https://…./svn/wp-themes/trunk/faceblog)。
红色标注部分,即在第1步中我记下的那个目录。
绿色标注部分,为我的要上传的ftp地址。
6,理论上来讲,我们按照上面的5个步骤,从部署到配置就完成了,但本人这样做完之后,却发现存在很多的问题,遇到的问题及要注意的如下:
① 感觉php-ftp-client类库里的isDir($path)函数 原作者 写的貌似有点问题,即判断传入的参数是否是目录上 不太靠谱,后来我改了一下才凑合用了。
② 刚开始调试的时候,每调试一次,我都得提交一次faceblog的版本库,比较麻烦,并且还是些不必要的提交纯粹是测试提交,后来在知道可以在cmd中以命令行的形式调试,其实就是模拟执行了D:\Repositories\wp-themes\hooks\post-commit.bat文件的执行,在cmd中打入:
php "D:\svn_syn_blog\php-svn-hooks\post-commit.php" D:\Repositories\wp-themes 121 "config.php"
上面标注的部分,即 传入的三个参数,分别代表:本地版本库地址、版本号、配置文件,传入后在post-commit.php通过$_SERVER[‘argv’][1]、$_SERVER[‘argv’][2]、$_SERVER[‘argv’][3]来获取,至于$_SERVER[‘argv’][0]是默认传入的参数也就是”D:\svn_syn_blog\php-svn-hooks\post-commit.php”要执行的php文件本身。
③作者在写post-commit.php文件里的程序时,估计是没有考虑版本库下创建了 branches、trunk等情况,因为我的faceblog在版本库中实际的目录是 wp-themes/trunk/faceblog,这样的话,如果你按照上面的配置的话,实际 ftp上传的是,D:\Xampp\htdocs\wordpress\wp-content\themes\faceblog\wp-themes\trunk\aceblog当然这是不存在的,所以就不会成功,所以如果是这种形式的话,还要自己动手修改一下post-commit.php里面的程序,在此不赘述,通过②相信自己调试的过程中你会发现的。
偶也,写完了。
其实,回头想想,这个方法也不算太麻烦,麻烦就是麻烦在原作者写的程序还不够好(希望原作者能够及时的更新),方法太零散,但是其实你只要明白了这个原理了,就会明白许多了。
我想估计用的真正使用的人不会很多,也或许是他们有更好的同步方法。
《全文完》
这个我收了. 不错不错[我需要.]. 哈哈哈. 竟然还是沙发.
传说中的沙发党??
哥的新一轮YD攻略正式开始,快去看看我新发的文章吧
研究一下,看上去还挺复杂。厚厚!~
不懂。
学习了。一般不本地的。