安装参考http://www.cnblogs.com/macula/archive/2012/02/12/2347637.html
主要的使用步骤如下:
建立版本管理库:
svnadmin create mobile
(mobile为版本管理库名称,位置在当前登录用户的主目录下,如我正在使用svnadmin用户,则路径为/home/svnadmin/mobile,当如root用户不使用/home路径而是直接是/root/mobile)
将末版文件导入项目(这个命令用于把一个文件夹下的内容整个纳入版本前面创建的管理库中)
svn import mytree file:///home/svnadmin/mobile/ -m "Initial import"
mytree为要导入的文件所在的文件夹路径,file:///....为进行过svnadmin create后的目录 -m 'xxx'会使得'xxx'作为日志记录加入日志中
析出文件
每次有一个用户加入到开发时,需要先执行一次svn checkout命令将文件从版本管理库中导出到制定工作目录(这个目录下采用ll命令可以看到有.svn文件,该文件就是联系svn版本管理的文件)
svn checkout file:///home/svnadmin/www/
第一次需要析出 此后每次修改前svn update即可,在工作目录下svn update后自动将文件夹内文件更新到最后修改的版本 一般开发时都是在最新版本下做修改
提交更改
svn commit -m 'xxx'
即可,-m 后的'xxx'仍然会加入到日志中,用于后续使用svn log查看日志时查看,一般都会加入该版本相关的说明性内容
导出裸文件夹
svn export ~/www ~/default //需要强制时加--force参数
就可以把~/www(这是一个工作目录)中的版本(没有指定参数时默认该文件夹下的最新版本)导出到后面制定的目录下,且不包含.svn文件也就是“裸文件夹”。
svn在create命令时得到的那个文件夹下(上例中是mobile文件夹)还有很多文件夹,比如hooks文件夹下可以放置与很多事件相关的处理脚本(比如名称为post-commit的脚本可以在每次一个提交发生后被执行 ),它们可以用于在提交等事件发生时进行文件夹同步等后续操作。
注意,这些脚本是根据名称来决定何时被触发执行的,一般刚安装的时候每个脚本都有一个.tmpl的后缀,此时是不会被执行的。
脚本所使用的语言可以随意,最终执行所使用的解释器通过第一行指定,安装时那些默认脚本里是#!/bin/sh,也就是shell脚本。
当使用shell脚本时注意要使用的命令必须给出完整的路径名,比如我们平常在linux下命令行直接svn xxxx习惯了但是实际上它调用了/usr/bin/svn程序,在脚本中如果要使用需要把/usr/bin/svn完整给出或定义变量
eg.一个完成日志输出和同步到指定文件夹的post-commit脚本
SVN=/usr/bin/svn REPOS="$1" REV="$2" ECHO=/bin/echo $ECHO `whoami`,$REPOS,$REV >> /home/svnadmin/www/hooks/svn_hook.log "$REPOS"/hooks/mailer.py commit "$REPOS" $REV "$REPOS"/mailer.conf export LANG=en_US.UTF-8 $SVN update /home/svnadmin/www/www --no-auth-cache
注意$ECHO `whoami`,$REPOS,$REV >> /home/svnadmin/www/hooks/svn_hook.log中>>是追加而>重定向每次都会清除原文件内容再录入
$SVN update /home/svnadmin/www/www --no-auth-cache 用于同步更新的版本到/home/svnadmin/www/www文件夹,--no-auth-cache可以使得每次同步会立即执行
然后注意需要给予这些脚本可执行的权限。
有关svn的用户权限设置可以参见http://www.cppblog.com/sureandrew/articles/94748.html
远程使用要求服务器上开放3690端口的访问
如果开放,在本地pc上使用svn checkout svn://123.123.123.123/projectname localdirectory --username 用户名 --password 密码
即可(后面用户名和密码可选,projectname是远程服务器上开放的版本库名称,localdirectory为本地想要存放的工作目录)