安装 SVN
检查是否安装
卸载旧版本
安装最新版本
检查是否安装成功
(–之后一般跟选项的完整名称,-之后一般跟选项的单个字母缩写)
创建项目仓库
创建目录
1
| mkdir -p /var/svn/svnrepos
|
(-p 命令是当父目录不存在时创建它)
创建项目仓库
1
| svnadmin create /var/svn/svnrepos
|
检查是否创建成功
之后使用 ll 查看是否多了一些文件夹(如果成功)
配置项目库
进入 conf 目录,了解配置文件:
authz
是权限控制文件 passwd
是账号密码文件 svnserve.conf
是 SVN 服务配置文件
配置 passwd
根据 users
标签中的提示进行配置即可,等号左边是用户名,右边是密码
配置 authz
只有自己用,所以只是限定自己的用户有 rw 权限即可,在文末加入用户名和读写权限就可以了
1 2 3
| #example [/] abc(your username) = rw
|
配置 svnserve.conf
1 2 3 4 5
| anon-access = none auth-access = write password-db = password authz-db = authz realm = imagine's svn server # 认证命名空间,subversion 会在认证提示里显示,并且作为凭证缓存的关键字。
|
采用默认配置. 以上语句都必须顶格写, 左侧不能留空格, 否则会出错.
开放 SVN 端口
修改 iptables
1
| iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
|
保存 iptables 配置
1
| /etc/rc.d/init.d/iptables save
|
重启 iptables
1
| service iptables restart
|
查看 iptables 状态
1
| /etc/init.d/iptables status
|
启动 SVN 服务
1
| svnserve -d -r /var/svn/svnrepos
|
-d:守护进程 -r:svn 根目录
连接 SVN
使用 TortioseSVN 连接到 svn://我的 ip 地址/
输入前面设置的用户名密码即可访问
配置开机启动
编写脚本 svn_startup.sh
,放在/root/svn_startup.sh
,代码如下
1 2 3
| #!/bin/bash export LC_CTYPE="zh_CN.UTF-8" /usr/bin/svnserve -d -r /var/svn/svnrepos
|
(关于绝对路径:在启动的时候环境变量可能没有加载,所以采用绝对路径比较保险,可以使用 which svnserve
命令来查询绝对路径)
修改脚本权限
1
| chmod ug+x svn_startup.sh
|
或者
1
| chmod 777 svn_startup.sh
|
添加自启动
在文件末尾添加命令行脚本
重启之后确认启动成功
checkout 网站工作目录
1
| svn co svn://localhost /var/www/html/ --username user --password passwd
|
使得 SVN 可以自动同步网站代码
将工作目录转移到钩子文件夹
1
| cd /var/svn/svnrepos/hooks
|
添加配置文件
1 2
| cp post-commit.tmpl post-commit chmod 777 post-commit
|
修改 post-commit 文件,加入以下代码
1 2 3 4
| export LANG=zh.CN.UTF-8 cd /var/www/html/ /usr/bin/svn update --username usrname --password passwd --no-auth-cache echo`date`,`whoami`,$REPOS,$REV >>/var/svn/svnrepos/hooks/svn_hook.log
|
SVN 同步时注意
工作目录需要先 checkout(前面已经 checkout 过了)
先切换到工作目录 再用 SVN 的 co
或者 checkout
命令进行 checkout
如果工作目录有更改,需要 commit
先切换到工作目录 再用 SVN 的 commit
或者 ci
命令进行同步 可能需要—message 或者-m 参数,后面跟上这次修改的一些信息即可
如果工作目录中有新的文件,需要先添加到 SVN 中在同步
使用 SVN 的 add 命令进行添加文件或者文件夹 如果需要添加的文件很多,可以使用 Linux 的 _通配符: svn add _/*
批量添加/删除 SVN 同步的文件
使用 bash 命令
添加
1
| svn status|grep ? |awk '{print $2}'|xargs svn add
|
删除
1
| svn status|grep ! |awk '{print $2}'|xargs svn del
|
(转自:http://blog.csdn.net/ownfire/article/details/7930370)
可以添加到 PATH 中,如/usr/local/bin
,命令叫做 svnaddall
和svndelall
如果 SVN 同步目录中出现中文,钩子无法正常运行需要修改系统的 locale
1
| export LC_CTYPE="zh_CN.UTF-8"
|
之后可以用 locale
命令检查 (添加 locale 的命令已经包含在自启动文件中了)