基于Linux操作SVN服务器和客户端

在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管理系统中)。
posted @ 2023-11-25 16:43  KevinAshton  阅读(30)  评论(0)    收藏  举报