在Linux系统上安装SVN客户端
对于很多刚接触Linux的开发者来说,第一件事就是搞定SVN的安装。不同的Linux发行版安装方式略有差别,但都不复杂。如果你用的是Ubuntu或Debian这类基于Debian的系统,直接在终端输入sudo apt-get install subversion就能搞定。CentOS或Red Hat系列的用户则要换成sudo yum install subversion,或者新版的sudo dnf install subversion。
安装完成后,敲一下svn --version看看版本号,如果正常显示出来,说明安装成功了。别小看这一步确认,很多人安装过程看着没问题,但实际环境中版本太老导致各种莫名其妙的问题。建议装之前先更新一下系统包管理器的源,特别是国内用户,换个阿里云或清华的镜像源,下载速度能快上好几倍。
SVN常用命令怎么用才不出错
刚开始用SVN的时候,最基础的就是把远程仓库的代码拉下来。命令是svn checkout 仓库地址,这个地址通常是你公司SVN服务器上给你的那个URL。有时候地址后面可以加个空格加上本地目录名,这样代码就会下载到指定的文件夹里,而不是直接散在当前目录。
提交代码的时候记住,SVN和Git不一样linux格式化硬盘,不需要先add再commit。你直接在本地改完文件,然后svn commit -m "写清楚你改了什么"就行了。但有个坑很多人踩过,就是忘了先svn update。在你修改代码的这段时间,别人可能已经提交了新版本,你的本地版本落后了,直接commit会被拒绝。正确做法是先update,有冲突就解决冲突,然后再commit。
查看文件状态用svn status,它会告诉你哪些文件被改了、哪些是新加的、哪些被删了。红色问号表示未版本控制的文件,红色感叹号表示本地有修改但没提交。养成每次操作前先status看一眼的习惯,能避免很多低级错误。

解决冲突和回退版本的实际操作
冲突大概是SVN使用中最让人头疼的事了。当你update的时候,如果提示冲突,SVN会在冲突文件旁边生成几个临时文件,比如file.c.mine、file.c.r100、file.c.r101。这时候别慌,用文本编辑器打开你的原文件,里面会用特殊标记标出冲突的地方,<<<<<<< .mine到=======之间是你自己的修改,=======到>>>>>>> .r101是服务器上的版本。
手动选择保留哪部分,删掉那些标记和临时文件,然后执行svn resolved 文件名告诉SVN冲突解决了。要是觉得自己改得一团糟想放弃,svn revert 文件名可以把文件恢复到修改前的状态。如果想回退整个目录到某个版本linux svn使用,用svn merge -r 当前版本号:目标版本号 文件路径,这个操作要小心,最好先确认清楚了再执行。

日常使用中容易忽略的SVN设置
SVN的配置文件在~/.subversion/config,里面有些开关平时没人关注但很实用。比如把global-ignores这一行取消注释,加上<strong>.o </strong>.lo <strong>.la </strong>.al .libs <strong>.so </strong>.so.[0-9]<strong> </strong>.a <strong>.pyc </strong>.pyo __pycache__linux查看磁盘空间,编译生成的中间文件就不会被误提交了。
另外建议配置下SVN的编辑器,默认可能是vim,如果你不习惯可以改成nano或gedit。在配置文件里找到editor-cmd,改成你喜欢的编辑器路径。提交时如果忘了写-m参数,SVN会自动打开这个编辑器让你补提交信息,比在命令行里硬憋强多了。
对于频繁操作同一个仓库的用户,设置一下SVN的缓存密码也是个好主意。编辑~/.subversion/servers,在[global]段下添加store-passwords = yes和store-plaintext-passwords = yeslinux svn使用,这样每次操作就不用反复输密码了。不过如果是在公共服务器上,千万别这么干。
实际工作中,SVN虽然看起来命令简单,但配合Linux的shell脚本能做出强大的自动化流程。比如写个每天自动更新代码并编译的脚本,用crontab定时执行,能省掉大量重复劳动。刚开始接触SVN的人,照着上面这些命令敲一遍,基本就能应付日常开发了。
