基于 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 丢失

批量文件操作 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
posted @ 2023-11-25 16:43  KevinAshton  阅读(4)  评论(0编辑  收藏  举报