文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正。并且该文档在后期会随着学习的深入不断补充完善。
资料仅供学习交流使用。 作者:Aliven888
在大型项目开发中,我们的代码量是很大的,这时是需要团队合作来进行开发的;但是我们在进行团队开发时,有时很难做到所有人保持统一,这是我们仅需要引入版本控制系统了。
版本控制系统的优点:
集中化的管理,自动跟踪单个文件的修改历史。完善的日志机制,便于掌握某次的修改原因。可快速还原到某个版本。协调不同开发者之间的活动,保证对源代码的同一部分的改动不会相互覆盖。在Linux的操作系统中实际上是包含subversion(下文中统一使用简称:SVN)的,我们只需要在安装系统时对其进行勾选即可。
第一种方式:安装系统时,勾选安装下。 第二种在线安装,执行安装指令:yum install subversion
我们可以通过简单的查询版本信息来判断SVN是否安装成功。
svn --version # 查看Subversion客户端版本信息 svnadmin --version # 查看Subversion管理工具版本信息创建svn仓库路径,以便于版本管理。
mkdir /home/aliven/branch //创建仓库路径 svnadmin create /home/aliven/branch/v1.0 //创建仓库,并以版本号命名我们先创建一个项目,然后将其导入刚刚创建的仓库中。
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指定检出目录:
不指定检出目录:
我们在进行团队开发时,常常遇到 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。
有时我们提交了一个版本,突然发现,代码实现有误或者方案不合理,需要撤回,这时我们就可以通过版本回滚来实现。
# -r : 指定了需要执行回滚操作的版本号 svn merge -r 5:4 main.c #由版本 5 回退到版本 4前面使用到的指令,这里统一汇总一下:
指令描述svnadmin create建立项目仓库svn import导入源代码到仓库svn checkout (svn co)从项目仓库中检出项目代码svn diff查看本地文件与svn仓库文件版本之间的差异svn commit提交改动svn log查看svn 提交日志信息svn resolved解决文件冲突svn megre版本回滚svn add添加一个新的文件