在 Linux 客户端操作 SVN 命令
常用操作命令
SVN 命令 |
含义 |
svn update |
同步工作拷贝到 SVN 仓库最新版本 |
svn status |
查看工作拷贝与 SVN 仓库文件结构差异 |
svn diff FOO |
比较 FOO 工作拷贝与 SVN 仓库最新版本 |
svn diff -r 3 FOO |
比较 FOO 工作拷贝与 SVN 仓库 r3 版本 |
svn diff -r 2:3 FOO |
比较 FOO SVN 仓库 r2 和 r3 版本 |
svn diff -c 3 FOO |
比较 FOO SVN 仓库 r3 和上次版本(r2) |
svn cat -r 3 FOO |
查看 SVN r3 版本 FOO 文件内容 |
svn revert FOO |
从 SVN 仓库恢复 FOO 到工作拷贝 |
svn commit FOO -m "msg" |
上传 FOO 到 SVN 仓库并记录日志 |
svn info |
查看 SVN 最新版本信息 |
svn log |
查看 SVN 所有版本信息 |
文件结构操作命令
SVN 命令 |
含义 |
svn add FOO |
预定 FOO 到 SVN 等下次 commit 时上传到 SVN 仓库 |
svn delete FOO |
从工作拷贝立即删除 FOO,下次 commit 从 SVN 仓库删除 FOO |
svn copy FOO BAR |
从工作拷贝立即复制 FOO 到 BAR,下次 commit 从 SVN 仓库复制 FOO 到 BAR |
svn move FOO BAR |
从工作拷贝立即移动 FOO 到 BAR,下次 commit 从 SVN 仓库移动 FOO 到 BAR |
svn mkdir FOO |
从工作拷贝立即创建目录 FOO,下次 commit 从 SVN 仓库添加目录 FOO |
svn status 含义
status |
definition |
meaning |
? |
not |
没有处于 SVN 控制 |
A |
addition |
添加到 SVN 仓库 |
C |
conflict |
冲突 |
D |
deletion |
删除 |
M |
modified |
修改 |
! |
losted |
丢失 |
~ |
kind |
类型改变 |
批量文件操作 SVN 命令
批量操作 |
SVN 命令 |
删除没有处于 SVN 控制文件 |
svn status | awk '/^?/{print $2}' | xargs rm -vfr |
添加没有处于 SVN 控制文件 |
svn status | awk '/^?/{print $2}' | xargs svn add |
删除过时的 SVN 文件 |
svn status | awk '/^!/{print $2}' | xargs svn delete |
从 SVN 仓库恢复已修改文件 |
svn status | awk '/^M/{print $2}' | xargs svn revert |
首次创建工作拷贝并上传代码
- 进入本地目录
cd ./test_svn
- 查看仓库
svn info svn://192.168.1.110/home/gateway/test_svn
- 检出工作拷贝
svn checkout svn://192.168.1.110/home/gateway/test_svn ./
- 添加文件
svn add ./*
- 上传文件
svn commit -m "initial add"
在 Linux 服务端建立代码仓库
下载脚本软件包,解压,执行 create_svn.sh repository
即可创建 SVN 仓库
点击我下载create_svn脚本软件包
脚本 create_svn.sh 代码如下所示
#!/bin/sh
if [ $# -ne 1 ]; then
echo "$0 repository"
exit 1
fi
REPOS=$1
mkdir ../${REPOS}
svnadmin create ../${REPOS}
cp ./passwd ./svnserve.conf ../${REPOS}/conf
sed -i "/^realm =/c realm = ${REPOS}" ../${REPOS}/conf/svnserve.conf
chmod -R o+w ../${REPOS}
sudo /etc/init.d/xinetd restart
exit 0