linux编程 —— 多人集成开发 之 SVN 安装及使用操作使用说明

    科技2022-07-31  108

    文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正。并且该文档在后期会随着学习的深入不断补充完善。


    资料仅供学习交流使用。 作者:Aliven888

    1、简述

     在大型项目开发中,我们的代码量是很大的,这时是需要团队合作来进行开发的;但是我们在进行团队开发时,有时很难做到所有人保持统一,这是我们仅需要引入版本控制系统了。

    版本控制系统的优点:

    集中化的管理,自动跟踪单个文件的修改历史。完善的日志机制,便于掌握某次的修改原因。可快速还原到某个版本。协调不同开发者之间的活动,保证对源代码的同一部分的改动不会相互覆盖。

    2、版本控制系统(Subversion)

     在Linux的操作系统中实际上是包含subversion(下文中统一使用简称:SVN)的,我们只需要在安装系统时对其进行勾选即可。

    2.1、安装SVN

    第一种方式:安装系统时,勾选安装下。 第二种在线安装,执行安装指令:yum install subversion

    2.2、检查SVN是否安装成功

    我们可以通过简单的查询版本信息来判断SVN是否安装成功。

    svn --version # 查看Subversion客户端版本信息 svnadmin --version # 查看Subversion管理工具版本信息

    2.3、建立项目仓库

     创建svn仓库路径,以便于版本管理。

    mkdir /home/aliven/branch //创建仓库路径 svnadmin create /home/aliven/branch/v1.0 //创建仓库,并以版本号命名

    2.4、项目导入仓库

     我们先创建一个项目,然后将其导入刚刚创建的仓库中。

    mkdir /home/aliven/work/project_v1.0 # 创建项目文件夹 touch main.c # 创建项目工程函数文件,mian函数先输入打印 hello world # main.c 代码 #include <stdio.h> int main(int argv, char* argc[]) { printf("hello world\n"); return 0; } # -m 为本次操作增加一条日志信息 # . 表示当前目录,传输当前目录的全部文件,也是指定文件 ./fileName # file:// 表示当前服务器,因为我是在本机上创建的仓库 # //home/aliven/branch/v1.0 仓库路径 # projectName 导入源程序,并在svn仓库中创建项目projectName, 必须指定,否则会报错已存在 svn import -m "版本描述/修改日志" . file:///home/aliven/branch/v1.0/projectName

    2.5、从仓库检出

    mkdir /home/aliven/work/project_v1.1 # 创建一个新的项目路径 # file:///home/aliven/branch/v1.0/projectName 仓库路径 # v1.1 指定检出的目录,如果不添加该项,该语句将会在projectName目录下创建一个projectName目录,并检出(即,如果不指定目录,将会以仓库中项目名称做目录导出)。 svn checkout file:///home/aliven/branch/v1.0/projectName v1.1

    指定检出目录:

    不指定检出目录:

    2.6、修改代码和提交SVN

    # main.c 代码修改打印输出 #include <stdio.h> int main(int argv, char* argc[]) { # printf("hello world\n"); printf("hello lao tie 666 ! \n"); return 0; } # 检测本地文件与svn仓库中的差异性 svn diff main.c # 提交修改到svn svn commit -m "change main.c content"

    2.7、查看svn日志信息

    # 查看svn日志信息 #查看全部日志信息 #(因为我的仓库还创建了proj_01 和 proj_02项目,占用了svn版本号,而本项目使用 r3开始的,可以有2.3小节截图中看出来。) svn log

    2.8、解决冲突

     我们在进行团队开发时,常常遇到 A 程序员更新了 main.c,这时 B 修改 main.c 文件,因为在修改前 B 没有将项目文件更新到最新,这时svn就会报错:提交失败,文件"main.c"已过时的提示。

    此时我们先执行更新指令,然后弹出提示后选择p,之后打开文件,就可以发现 B 程序员当前的修改和 A 程序员已提交的修改。 于是A 和 B 两位程序员通过商定,操作 B程序员的打印输出,于是在B程序员修改了main.c文件后,执行 svn resolved main.c 解决svn冲突后, 修改main.c文件后,上传svn。

    2.9、撤销改动

    有时我们提交了一个版本,突然发现,代码实现有误或者方案不合理,需要撤回,这时我们就可以通过版本回滚来实现。

    # -r : 指定了需要执行回滚操作的版本号 svn merge -r 5:4 main.c #由版本 5 回退到版本 4

    3.10、添加一个新文件到仓库

    svn add max.h svn commit -m "add new file"

    3、指令汇总

    前面使用到的指令,这里统一汇总一下:

    指令描述svnadmin create建立项目仓库svn import导入源代码到仓库svn checkout (svn co)从项目仓库中检出项目代码svn diff查看本地文件与svn仓库文件版本之间的差异svn commit提交改动svn log查看svn 提交日志信息svn resolved解决文件冲突svn megre版本回滚svn add添加一个新的文件
    Processed: 0.014, SQL: 8