svn的常规使用

  • svn的常规使用
  • 1 客户端
  • 2 svn server
  • 3 qt使用svn
  • 4 svn项目迁移
  • Ubuntu上使用svn
  • 1 安装
  • 2 使用

svn的常规使用

1 客户端

  1. 下载地址:官网,中文简体语言包在其下方

svn国内镜像 svn中文版使用教程_svn

分别安装客户端可语言包,在安装语言包的时候勾选应用,svn便可变成中文了,或者在svn中setting的language中选择中文即可

2.在想要检查项目的文件夹中,鼠标右键-》检出-》输入url,用户名,密码,即可

2 svn server

  1. 下载:官网
  2. 安装
  3. 新建用户

svn国内镜像 svn中文版使用教程_sed_02

  1. 新建项目

此电脑-》管理-》服务和应用程序

svn国内镜像 svn中文版使用教程_svn_03

svn国内镜像 svn中文版使用教程_svn_04


svn国内镜像 svn中文版使用教程_sed_05

svn国内镜像 svn中文版使用教程_svn_06

svn国内镜像 svn中文版使用教程_svn_07


svn国内镜像 svn中文版使用教程_sed_08


svn国内镜像 svn中文版使用教程_服务器_09

3 qt使用svn

svn国内镜像 svn中文版使用教程_svn_10


svn国内镜像 svn中文版使用教程_svn国内镜像_11


svn国内镜像 svn中文版使用教程_svn国内镜像_12


svn国内镜像 svn中文版使用教程_sed_13


svn国内镜像 svn中文版使用教程_服务器_14

4 svn项目迁移

即:将svn管理的源码从一台服务器转移到另一台服务器,确保svn的log日志不丢失,开发人员只需要将svn地址relocate到新服务器即可。

操作步骤如下:

注意,不要用powershell操作,会出现未知的问题,就用cmd执行以下操作就行

在原 SVN 服务器上找到 VisualSVN Server 的安装目录下的 bin 文件夹,在命令行中切换至该路径。
在命令行中输入svnadmin dump D:\Repositories\test > D:\svnback\test.dump 其中 D:\Repositories 为原 svn 项目源码的存放路径,D:\svnback 为你将要导出到的目标文件夹,test 为项目名称。
将导出的 .dump 文件拷贝到新服务器上,例如文件夹 F:\svnback
在新服务器上打开 VisualSVN Server Manager,创建该项目(创建一个空项目)
在新服务器上找到 VisualSVN Server 的安装目录下的 bin 文件夹,在命令行中切换至该路径
在命令行中输入 svnadmin load C:\Repositories\test < F:\svnback\test.dump 其中 C:\Repositories 为目标 svn 项目源码的存放路径,F:\svnback\test.dump 为之前导出的文件

Ubuntu上使用svn

1 安装

检查是否已安装

svnserve --version

更新软件

sudo apt-get update

删除SVN遗留文件

sudo apt-get remove --purge subversion

安装

sudo apt-get install subversion

查看安装版本

sudo svnserve --version

2 使用

检出:

svn co https://192.168.1.xx/svn/xxx

增加:

cd xxx

然后执行批量添加

svn st | grep '^\?' | tr '^\?' ' ' | sed 's/[ ]*//' | sed 's/[ ]/\\ /g' | xargs svn add

摘自《卓有成效的程序员》
当你想添加所有文件时,会报出一些错误,例如 “svn: E200009: 因为一些目标已经版本化,所以不能增加全部目标”,而上面那一行简单的bash命令就可以完成批量添加。
svn st:获取当前目录以及子目录中所有文件的Subversion状态,每一文件一行,尚未加入版本控制的新文件会以一个问号?开头,随后是一个tab,最后是文件名。
grep ‘^?’:找出所有以”?”开头的行。
tr ‘^?’ ’ ':把”?”替换成空格(tr命令会把一个字符转换成另一个字符)。
sed ‘s/[ ]*//’:用sed(基于流的编辑器)把每行开头的空格去掉。
sed ‘s/[ ]/\ /g’:文件名内部也可能包含空格,所以再次动用sed,把文件名中的空格替换转义字符。(加 “\”)
xargs svn add:针对前面的结果,逐一调用svn add。
补充一个,未验证的svn st | awk ‘{if ( $1 == “?”) { print $2}}’ | xargs svn add

提交:

svn ci -m “log” xxx

更新:

svn up 文件名

查看文件或者目录状态
svn status path(目录下的文件和子目录的状态,正常状态不显示)
svn status -v path(显示文件和子目录状态)
简写:
svn st

版本库中删除的文件
svn delete path -m file
或使用
svn delete path file --force 可以删除刚刚添加但是没有commit的文件。
简写:
svn (del, remove, rm)

提交报错:svn: E145001: Entry ‘/home/work/xRobotCarSVN/ground/openpilotgcs/src/libs/flir/lib/linux64/ ’ has unexpectedly changed special status
svn rm /home/work/xRobotCarSVN/ground/openpilotgcs/src/libs/flir/lib/linux64/
如再报错:svn: ‘home/work/xRobotCarSVN/ground/openpilotgcs/src/libs/flir/lib/linux64/’ is in the way of the resource actually under version control
强制删除:
svn rm --force /home/work/xRobotCarSVN/ground/openpilotgcs/src/libs/flir/lib/linux64/

更新到某个版本
svn update -r m path
简写:
svn up

查看日志

svn log path
svn log -l 20 //输出最近20条信息
svn log -q //只输出版本号、时间、作者 而不输出日志
svn log --xml //让日志以xml形式输出,可二次利用

查看文件详细信息

svn info path

比较差异

svn diff path(将修改的文件与基础版本比较)
svn diff -r m:n path(对版本m和版本n比较差异)
简写:
svn di

将两个版本之间的差异合并到当前文件

svn merge -r m:n path

SVN获取url信息

svn info | grep URL
svn info

SVN 帮助

svn help
svn help ci