在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
高效版本控制法则
- 一定要有版本控制系统,它是开发工作的支柱。没有它,软件开发就时刻处于危险当中。
- 原子提交:提交要小而频繁。
- 提供正确的信息:总结做了哪些改变和原因,可以包括bug编号或其他支持信息。
- 不要造成构建失败,按顺序工作:修改代码-->用最新代码构建软件-->测试新代码-->提交到仓库。
- 不要删除或移动文件,除非确定每个人都能接受。
- 随便选一个,集中式的SVN易用适合局域网用,分布式的Git强大适合公网用。
- 存储重新构建软件所需的每个文件:源代码,文档,Makefile,配置文件,资源(图片,声音),第三方库。
- 存储尽可能少的文件,不要存储:生成对象,个人设置,非项目文件,bug报告(它应该在bug管理系统中)。