首页 > 学院 > 操作系统 > 正文

版本控制之SVN

2024-06-28 15:59:55
字体:
来源:转载
供稿:网友

SVN: subversion 子级版本 (子级源代码版本控制管理软件)

它是代码版本管理软件,管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。

使用svn可以很好地协调一个团队共同开发同一个项目,而不会出现代码冲突、覆盖的情况。

安装

服务器安装

双击setup-subversion-1.6.5.msi: svn服务器安装 把svn安装到固定的一个文件夹下面,比如: 安装目录 svn服务器安装目录 安装完毕会有这样的文件 svn服务器安装成功 客户端安装 双击安装客户端软件(安装完毕重启电脑): (根据自己操作系统位数64/32做选择安装) svn客户端安装 客户端安装完毕,鼠标右键有相应的标志: svn客户端安装完毕

创建多个svn仓库

给svn服务器端创建多个代码仓库,用户存储开发的不同项目的程序源代码。 svn仓库创建 以管理员身份打开cmd > svnadmin create h:/svnServer/app/shop 创建完毕会在对应目录生成许多文件 创建仓库 如果svnadmin执行提示不是内部指令就到该指令的执行程序文件目录执行这命令 svn创建创库指令

启动仓库服务

管理员身份打开cmd输入命令 svnserve -d(独立端口运行) -r(仓库地址) 仓库地址

> svnserve -d -r h:/svnServer/app/shop //启动shop仓库服务

输完了先不要关闭cmd 该svn服务走svn协议,端口号码是3690 开启服务标志在windows任务管理器中进程查看svnserve.exe应该有这个进程

本地客户端与仓库联系

我的仓库是D:/linken svn客户端与仓库联系 如果没有成功的话,右键点击文件夹空白处,右键菜单栏共享一行中停止共享 与仓库连接成功 同时本地文件夹下面会出现.svn的隐藏文件夹,如何显示隐藏文件夹百度去

使用SVN

提交第一个程序文件

① 右键——> SVN—->Add (本地的.svn对该文件形成管理),每个文件只需要一次add操作接口 ② 右键——> Commit(提交) (本地的文件提交给svn仓库) 开启账号匿名账号提交权限 svn开启账号匿名账号提交权限 开始提交 add提交 提交仓库

文件颜色标志

刷新下,或者关闭文件夹再进,会有颜色显示 ① 蓝色加号:本地的.svn对该文件有形成管理 ② 绿色对号:本地文件、.svn管理的版本文件、仓库文件 三者内部一致 ③ 红色叹号:本地文件 与 .svn和仓库文件 不一致(用户自己修改了该文件) ④ 黄色叹号:表示该文件正处于冲突状态 ⑤ 蓝色问号:新建的一个文件,本地.svn 和 远程仓库 对该文件都没有记录

在仓库内部查看已经提交的文件

仓库内部的文件禁止修改 日志文件

自己写好的代码

多个程序员给仓库提交文件

首次使用svn执行 checkout,同时会把仓库最新程序文件更新到本地。 给仓库提交程序文件,执行 commit指令 把仓库最新的程序文件更新到本地,执行 update指令 后期 commit 和 update 指令要频繁使用。 流程

一键commit同时提交多个文件

为了加快文件的提交速度,可以在项目文件目录点击“右键选择需要的文件——>commit”,svn会把当前目录及内部所有子级递归目录需要提交的文件给选取上供commit操作。 (新文件会通过commit指令把 add和commit 合并起来执行)无需add操作,如果是新文件会把add和commit合并执行

注意 新目录内部的文件不能直接提交,必须是目录本身已经提交给仓库了,该目录的文件才可以单独进行(add/)commit提交动作。

同时运行多个svn仓库服务

把所有仓库的上级目录当成服务给启动起来。

svnadmin create h:/svnServer/app/crm

>svnserve -d -r F:/svnServer/app/

svn仓库的主机名可以设置如下:

>svn://localhost/仓库名称

多仓库运行

用户更换svn主机名地址

删除.svn文件,断开与仓库的联系 重新checkout并根据svn新主机名建立与仓库的新联系

同一个文件的不同版本切换

一个程序文件可以在svn仓库里边形成许多不同版本,并可以随时查看、对比。

查看日志文件

把文件切换到之前的某个版本: 把文件切换到之前的某个版本

恢复到之前版本

冲突解决

两个程序员在短时间内对同一个文件进行修改,并进行提交,后提交的文件会尝试覆盖先提交者的文件,但是不会成功,因为有“冲突”机制避免此情况发生。

冲突解决: ① 令牌方式解决,给每个文件设置令牌,谁获得令牌谁有权利开发该文件。 vss(visual source safe)源代码控制管理软件使用该方式 ② 通过版本号码进行控制,用户commit文件,本地文件版本 与 仓库版本号码必须一致才可以提交,否则禁止提交。 (本地与服务器版本号码不一致,一定是本地的号码小于仓库的) SVN就是通过版本号码解决冲突

修改的代码不在同一处

解决: 执行update操作,把仓库最新的文件更新到本地,并和本地文件做Merge融合(不是覆盖)操作。 之后继续提交文件即可。 修改的代码不在同一处 然后这个文件是合并之后的文件

修改的代码在同一处

直接update操作把最新的版本更新到本地,与本地文件做Merge融合操作, 对冲突文件稍作修改后继续提交即可。 修改的代码在同一处 最后这3个文件都要删除,看完之后对2.txt修改再提交 里面文件是这种

账号和权限

账号配置文件 在F:/svnServer/app/shop/conf/svnserve.conf中修改文件 修改配置文件

修改配置文件

设置账号 F:/svnServer/app/shop/conf/passWord 设置账号

给具体用户设置权限 用户设置权限

给一个组设置权限 这里写图片描述

这里写图片描述

开启只操作某个目录权限 步骤: ① 管理员先把该目录video给创建出来并提交给svn仓库 ② 给外部团队 设置账号 和 设置工作目录、和其分支目录权限 ③ 外包团队 建立与仓库分支目录 的联系(checkout) ④ 外包团队给该 目录提交文件 ⑤ 管理员执行update更新操作,把该分支目录从仓库更新下来即可查看外包团队的工作情况。 把被操作的文件目录video创建好并提交给svn仓库:

外包账号密码设置 这里写图片描述 外包权限设置 这里写图片描述 外包checkout设置 这里写图片描述

设置开机启动项服务

在DOS下设置这些,之前那个窗口可以关了 这里写图片描述

DOS 在计算机管理服务中把svnd启动

有的电脑由于权限限制禁止在dos窗口执行底层指令(例如sc create 或 sc delete).在dos操作没问题可以不用管 解决:可以把创建 和 删除 服务的指令保存为”批处理”(linux系统的shell脚本文件)程序文件。 这里写图片描述

删除服务操作 这里写图片描述

查看工作情况和bug追踪

这里写图片描述

这里写图片描述

清除缓存 这里写图片描述

不要做这样操作: 这里写图片描述

bug追踪

在show log中把需要对比文件都选中对比 这里写图片描述


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表