关于SVN代码库,和线上代码的问题
SVN是C/S架构,数据存放分成服务器端和客户端。创建代码库一般指的是SVN服务器端的操作,这个库随便建在什么地方都可以;你要发布的线上代码,这是存放在SVN的客户端的。
SVN的服务器端和客户端存放文件的格式是不同的,所以不能直接访问SVN服务器端的存储路径,只能通过SVN客户端将服务器端的存储内容checkout或者export出来。
理解上述这些基础知识后,你应该就明白了,你要做的事情就是:
1、先建立一个SVN服务器(可以专门安装SVN服务器端安装包,建立用http/https或svn协议访问的SVN服务器;也可以简单用TortoiseSVN创建本地的用files:///方式访问的SVN服务器);
2、在服务器端建立一个空的版本库,将你原有的www-web-项目 文件夹 上传到SVN服务器新建的版本库中;
3、在你线上存放代码的地方新建一个文件夹,并将版本库中的内容checkout到这个新文件夹,设置这个文件夹是以后线上发布代码的文件夹。
4、在你开发用的工作电脑上checkout一个文件夹出来,平时在这个文件夹修改代码,修改完成后上传到SVN服务器,然后在线上代码对应的文件夹那里更新得到上传的新代码。
这样的话,你的整个工作就分成了3个存储位置:1、服务器端,2、开发端,3、线上发布端,这就井井有条、互不干扰了。
当然,SVN要用的好,还有很多技巧,比如分支/标记的使用,比如钩子的使用(可以实现实时自动发布,每次从开发端提交后就自动更新线上发布端),那需要你继续学习了。
一、先分别了解下还原和更新各自的作用。
还原,将本地副本目录中所选文件或目录进行还原,以撤销本地副本目录的修改。
更新,将本地副本目录中所选文件或目录进行更新,以将本地副本目录与SVN库中最新版本进行同步。
二、先还原再更新中的先还原并不是一个必要操作。这取决于你是否遵照SVN使用规范,将代码修改目录和本地副本目录分开。且是否有在本地副本手动进行无用修改(对整套代码来说)。
所以,如果你的本地副本中有任何有用修改,则不能进行还原,应先考虑修改是否需要提交上库;如包含无用修改,则需先将本地副本全量还原再进行更新。
这里又涉及了是符合规范的代码修改目录和本地副本分开;还是单纯只有一个本地副本,修改也在本地副本中修改。如果是分开,那么基本不会用到还原操作,可以直接更新,但是还原操作也可以放心用,在碰到问题时也可以先还原再更新;如果只有一个,那就不能轻易用还原操作,因为还原操作很可能将你刚修改好的代码还原掉。
Tortoise SVN将一个文件和历史版本对比可以采用回退版本的方法,具体的操作步骤如下:
1、重新下载一份svn版本
2、右键单击要对比的文件,选择SVN菜单下面的Update to revision选项,如下图所示
3、点击弹出界面的Show log按钮,如下图所示
4、选择要回退到的历史版本,如下图所示
5、最后借助Beyond Compare的文本比较工具对比此文件的当前版本和历史版本
1右键-replace with-资源库中最新内容; 2右键-replace with-local history(本地资源库)-选择你所想要回退的版本 3右键-team-与资源库同步,可以选择提交、更新、覆盖更新(等同于1)
phpstorm快捷键 Ctrl + Shift + Enter 添加完成标识符 Ctrl + P 显示参数信息 Ctrl + Q 快速查找函数文档 Ctrl + mouse 快速跳转到当前鼠标代码的源出处 Alt + Insert 快速添加魔术方法 Ctrl + O 选中并重写当前类的一个方法 Ctrl + I
同步程序思路:用户提交程序到SVN,SVN触发hooks,按不同的hooks进行处理,这里用到的是post-commit,利用post-commit到代码检出到SVN服务器的本地硬盘目录,再通过rsync同步到远程的WEB服务器上。知识点:1、SVN的hooks#start-commit提交前触发事务#pre-commit提交完成前触发事务#post-commit提交完成时触发事务#pre-revprop-change版本属性修改前触发事务#post-revprop-change版本属性修改后触发事务通过上面这些名称编写的脚本就就可以实现多种功能了,相当强大。2、同步命令rsync的具体参数使用3、具有基个语言的编程能力bashpythonperl都可以实现post-commit具体实现细节post-commit脚本编辑文件:sudovim/home/svn/fitness/hooks/post-commit注意:编辑完成post-commit后,执行:sudochmod755post-commit内容:#!/bin/shexportLANG=zh_CNUTF-8sudo/usr/bin/svnupdate/var/www/www--usernamemirze--password123456注意:svn仓库文件夹的other必须要有执行权限不然脚本无法执行。SVNupdate之前一定要先手动checkout一份出来,还有这里一定要添加用户和密码如果只是手动一样会更新,但自动一样的不行。
0条评论