• svn的常规使用


    svn的常规使用

    1 客户端

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

    在这里插入图片描述

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

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

    2 svn server

    1. 下载:官网

    2. 安装

    3. 新建用户

    在这里插入图片描述

    1. 新建项目

    此电脑-》管理-》服务和应用程序
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3 qt使用svn

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    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
    
    • 1

    更新软件

    sudo apt-get update
    
    • 1

    删除SVN遗留文件

    sudo apt-get remove --purge subversion
    
    • 1

    安装

    sudo apt-get install subversion
    
    • 1

    查看安装版本

    sudo svnserve --version
    
    • 1

    2 使用

    检出:

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

    增加:

    cd xxx
    
    • 1

    然后执行批量添加

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

    摘自《卓有成效的程序员》
    当你想添加所有文件时,会报出一些错误,例如 “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
    
    • 1

    更新:

    svn up 文件名
    
    • 1

    查看文件或者目录状态
    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形式输出,可二次利用
    
    • 1
    • 2
    • 3
    • 4

    查看文件详细信息

    svn info path
    
    • 1

    比较差异

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

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

    svn merge -r m:n path
    
    • 1

    SVN获取url信息

    svn info | grep URL
    svn info
    
    • 1
    • 2

    SVN 帮助

    svn help
    svn help ci
    
    • 1
    • 2

    使用时遇到的问题

    1 创建多个用户

    在这里插入图片描述

    需要申请许可证,点击Request…,去官网申请免费的许可证

    2 删除登录用户凭证

    第一步:
    在这里插入图片描述
    第二步:
    在这里插入图片描述
    第三步:
    找到需要删除的用户,删除即可

    3 解决冲突

    当你在解决 SVN 中的代码冲突时选择了合并冲突,SVN 会自动进行代码合并,并将合并结果保存在三个文件中,分别是:

    filename.mine:表示你本地修改的文件;
    filename.r1:表示你本地修改的文件的基础版本(即你修改前的版本);
    filename.r2:表示服务器上最新的版本。
    这些文件的作用是帮助你手动解决代码冲突。你可以通过查看这些文件,了解自己本地修改了哪些部分,以及服务器上最新的代码版本有哪些修改。然后,你可以手动编辑代码文件,将自己的修改和服务器上的修改合并成一个新的版本。

    在解决完冲突后,你可以将这些文件删除掉。你可以使用以下命令来删除这些文件:

    svn resolved filename
    
    • 1

    在执行这个命令后,SVN 会将文件标记为已解决,然后删除这些文件。

    如果你使用的是 SVN 客户端界面,也可以在客户端界面中标记这些文件为已解决
    在这里插入图片描述

    本文长期更新

  • 相关阅读:
    智慧校园管理系统
    MySQL 文本函数和窗口函数
    php 中 try catch 不起作用解决,捕获不到异常
    北京大学肖臻老师《区块链技术与应用》公开课笔记:以太坊原理(三):智能合约
    项目打包找不到surefire的包(mvn install导包到本地仓库pom损坏导致打包问题)
    Cypress 前端 E2E 测试——手把手入门教程
    【2021集创赛】Arm杯三等奖:基于FPGA的人脸检测SoC设计
    asp.net core EF Sqlserver
    安装gymnasium[box2d]的问题
    跨平台编程开发工具Xojo 2023 Release mac中文版功能介绍
  • 原文地址:https://blog.csdn.net/qq_40666149/article/details/128116578