svn版本管理工具的使用

安装参考http://www.cnblogs.com/macula/archive/2012/02/12/2347637.htmlhtml

主要的使用步骤以下:linux

创建版本管理库:shell

svnadmin create mobile服务器

(mobile为版本管理库名称,位置在当前登陆用户的主目录下,如我正在使用svnadmin用户,则路径为/home/svnadmin/mobile,当如root用户不使用/home路径而是直接是/root/mobile)
将末版文件导入项目(这个命令用于把一个文件夹下的内容整个归入版本前面建立的管理库中)svn

svn import mytree file:///home/svnadmin/mobile/  -m "Initial import"post

mytree为要导入的文件所在的文件夹路径,file:///....为进行过svnadmin create后的目录 -m 'xxx'会使得'xxx'做为日志记录加入日志中spa

析出文件命令行

每次有一个用户加入到开发时,须要先执行一次svn checkout命令将文件从版本管理库中导出到制定工做目录(这个目录下采用ll命令能够看到有.svn文件,该文件就是联系svn版本管理的文件)日志

svn checkout file:///home/svnadmin/www/ code

第一次须要析出 此后每次修改前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为本地想要存放的工做目录)

相关文章
相关标签/搜索