SVN的使用的简单说明

检出项目

假如项目已经在服务器的仓库里,那么现在你要做的就是把它检出到本地。
首先创建一个空文件夹。在空文件夹内右键,选择SVN检出。
在这里插入图片描述
现在你看到应该是这个界面,填入版本库地址,选择确定。
在这里插入图片描述
如果是第一次登陆,此时会弹出一个对话框让你输入账号密码,输入你的账号密码即可。记得勾选保存认证,不然每次操作都会让你输入。
在这里插入图片描述
过几秒就会检出完成
在这里插入图片描述
找到目录就可以开始工作了
在这里插入图片描述

导入项目

右键选着版本浏览器
在这里插入图片描述
在这里插入图片描述

根据自己的项目上传你的文件或者文件夹
在这里插入图片描述
选着你的项目或者文件后
在这里插入图片描述
确定看到目录完成就行了
但是,不要以为导入成功就可以了。你还得重新检出,重新检出的项目才是受SVN控制的,务必记得检出,如果不检出你操作的属于你没有上传之前的文件,当你下次上传可能会出现问题。
在这里插入图片描述
在SVNProject上右键检出到本地,然后在里面进行修改。现在就可以愉快的工作了。
检出过后点击文件夹然后右键菜单变成了这样。
在这里插入图片描述

关于项目的提交

绿色表示当前文件没有被修改过(看不见颜色的重启下电脑就好了)。
在这里插入图片描述
如果在我的Dome里面对代码进行了修改。你就会发现现在变成了红色,红色表示已修改。
在这里插入图片描述
在根目录下,右键选择提交。
在这里插入图片描述
务必记得输入提交信息(虽然不输入也能提交),提交信息可以方便日后查看。
在这里插入图片描述
提交完毕后,可以发现又恢复到了绿色。如果看到还是红色可以退出后在进入就行了。
在这里插入图片描述
假如现在加入了一个新文件。可以看出是蓝色的。蓝色表示不属于版本库的未知文件,未知文件是不能提交的。有可能什么都不显示。记住选择增加把它加入到版本库里面去。
在这里插入图片描述
增加完毕后,变成了蓝色加号,表示新增加的版本库文件。
在这里插入图片描述
接下来,只需写代码,然后提交即可。
删除文件也应该右键提交,如下。
在这里插入图片描述
记得随时检查你的文件状态,如果没有添加到版本控制里要及时添加进去,不然你的文件提交不上去。

更新:

假如你和B同事在协作。B同事写完代码提交到了SVN上,如果你想获取最新修改,就需要选择更新(如果服务器上已经有别人提交过的新的,你是提交不上去的,必须先更新再提交)。
怎么知道服务器有没有更新?你可以直接选择更新,有没有更新一下就知道。或者右键检查修改,然后检查版本库,就能看到服务器上改了哪些文件。
在这里插入图片描述
在这里插入图片描述
右键选择版本比较。左边的表示你的代码,右边的表示服务器上的代码。
在这里插入图片描述
如果有修改记得及时更新到本地然后再继续工作。没有更新会提交失败。
在这里插入图片描述
但是有时候更新会冲突,比如你和服务器上的改了同一个地方。
这时候你需要更新下来解决冲突。
在这里插入图片描述
于是可以查看日志,看前面谁进行了相同模块的更改。方便代码覆盖相同进行协商。
在这里插入图片描述
它会提示你哪个文件冲突,你只需打开那个文件,按照需求解决冲突即可
在这里插入图片描述

解决冲突有三种选择:

A、放弃自己的更新,使用svn revert(回滚),然后提交。在这种方式下不需要使用svn resolved(解决)
B、放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行resolved filename并提交(选择文件—右键—解决)。
C、手动解决:冲突发生时,通过和其他用户沟通之后,手动更新目标文件。然后执行resolved filename来解除冲突,最后提交。

如何降低冲突解决的复杂度:

1、当文档编辑完成后,尽快提交,频繁的提交/更新可以降低在冲突发生的概率,以及发生时解决冲突的复杂度。
2、在提交时,写上明确的message,方便以后查找用户更新的原因,毕竟随着时间的推移,对当初更新的原因有可能会遗忘
3、养成良好的使用习惯,使用SVN时每次都是先提交,后更新。每天早上打开后,首先要从版本库获取最新版本。每天下班前必须将已经编辑过的文档都提交到版本库。

查看日志

选择显示日志,可以看出团队里面的人干了什么。
在这里插入图片描述
可以看出谁谁谁,什么时间,干了什么事。最后那一列信息是自己提交的时候写的。建议大家提交时务必要填写提交信息,这样别人一看就知道你干了什么。提交信息对于自己也是有好处的,时间长了也能看到当初做了什么。
在这里插入图片描述

版本回滚

如果你改了东西,但是还没有提交,可以使用还原功能。
在这里插入图片描述
但是如果我们写错了东西并且提交了上去怎么办?通过版本回滚可以将文件恢复到以前的版本。右键更新至版本,通过查看日志来选择版本,然后回滚即可。
在这里插入图片描述
有时候我们需要查看以前版本的代码。此时我们可以新建个文件夹检出到指定版本,不要把现在自己编写的版本覆盖就好
在这里插入图片描述

版本控制

版本控制有好几种方法,如下。
1.在提交发布版本时添加版本信息,这是最简单的一种方法。
在这里插入图片描述
2.打标签
每次发布版本时应该打标签。右键选择分支/标记。在至路径以版本号打上标签即可
在这里插入图片描述
在这里插入图片描述
这样你就有了一个v1.0版本的标签。
以后如果你想查看某个版本的代码,只需切换过去就行
在这里插入图片描述

创建分支合并相互操作

项目中为何要创建分支,及合并?
比如我现在项目所有的文件放在主干上中,由于需求的变更,需要增加新的需求,但是我们主干上还要继续往下开发,在此我们可以新建一个分支,来做增加新的需求那一块,主干上继续开发,等分支上代码没有问题的时候,再合并到主干上来。

创建分支的最大的目的就是跟主线进行并行开发时候不影响主线的开发。假如我本地新建一个文件夹test下有2个文件夹Cs (存放主干上的代码)和C_s(存放分支上的代码),如下所示:
在这里插入图片描述
新建分支, 从Cs(主干上)创建分支C_s步骤如下:右键Cs
在这里插入图片描述
现在我们可以再来看看本地branch文件夹了,我现在直接进入branch文件下,右键 --> Chenckout下,就可以把newBranch下的所有文件提取出来了,如下所示:
在这里插入图片描述
现在我们可以再来看看本地test文件夹了,我现在直接进入test文件下,右键 --> 检出下,就可以把C_s下的所有文件提取出来了,如下所示:
在这里插入图片描述
分支目前建立在svn的服务器端,本地并没有更新,对本地C_s文件夹 右键–> 更新即可,就可以更新到分支代码.

合并分支到主干上

比如我现在对C_s分支上新增 新的文件.txt文件,然后提交上去
在这里插入图片描述
我现在想把分支上的代码新增 新的文件.txt合并到主干上Cs,现在要怎么合并呢?步骤如下:
1.回到我们刚刚的主干(Cs)文件夹下,鼠标右键该文件夹–> TortoiseSVN --> Merge(合并) 如下图所示:
在这里插入图片描述
在这里插入图片描述
接着点击【Next】下一步,如下图所示:
在这里插入图片描述
在这里插入图片描述
就可以看到主干Cs上多加了一个新的文件.txt,就是从分支上合并过来的。
在这里插入图片描述

合并主干到分支

如果主干上有一些更新,比如说jar包更新等等,那么这些要更新到分支上去,如何操作呢?比如我现在在主干上新建一个1.txt文件
在这里插入图片描述
我现在的分支上目录如下:
在这里插入图片描述
现在是想把主干上的1.txt合并到分支上来,要如何操作?
步骤如下,还是和刚刚操作类似.
我们在分支点击C_s–> 右键TortoiseSVN–> 合并 如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后直接合并,就可以看到分支C_s上也有主干上的1.txt文件了,也就是说,合并主干到分支上也是可以的,如下图所示:
在这里插入图片描述

目录 译者序 前言 序言 读者 怎样阅读本书 本书约定 排版习惯 图标 本书组织结构 Subversion 1.1的新特性 这本书是免费的 致谢 来自Ben Collins-Sussman 来自Brian W. Fitzpatrick 来自C. Michael Pilato 1. 介绍 Subversion是什么? Subversion的历史 Subversion的特性 Subversion的架构 安装Subversion Subversion的组件 快速入门 2. 基本概念 版本库 版本模型 文件共享的问题 锁定-修改-解锁 方案 拷贝-修改-合并 方案 Subversion实战 工作拷贝 修订版本 工作拷贝怎样追踪版本库 修订版本混合的限制 摘要 3. 指导教程 帮助! 导入 修订版本: 号码、关键字和日期,噢,我的! 修订版本号 修订版本关键字 修订版本日期 初始化的Checkout 基本的工作周期 更新你的工作拷贝 修改你的工作拷贝 检查你的修改 svn status svn diff svn revert 解决冲突(合并别人的修改) 手工合并冲突 拷贝覆盖你的工作文件 下注:使用svn revert 提交你得修改 检验历史 svn log svn diff 比较本地修改 比较工作拷贝和版本库 比较版本库与版本库 svn cat svn list 关于历史的最后一个词 其他有用的命令 svn cleanup svn import 摘要 4. 分支与合并 什么是分支? 使用分支 创建分支 在分支上工作 分支背后的关键概念 在分支间拷贝修改 拷贝特定的修改 合并背后的关键概念 合并的最佳实践 手工追踪合并 预览合并 合并冲突 关注还是忽视祖先 常见用例 合并一条分支到另一支 取消修改 找回删除的项目 常用分支模式 发布分支 特性分支 转换工作拷贝 标签 建立最简单的标签 建立复杂的标签 分支维护 版本库布局 数据的生命周期 摘要 5. 版本库管理 版本库基本知识 理解事务和修订版本 未受版本控制的属性 版本库数据存储 Berkeley DB FSFS 版本库的创建和配置 钩子脚本 Berkeley DB配置 版本库维护 管理员的工具箱 svnlook svnadmin svndumpfilter svnshell.py Berkeley DB工具 版本库清理 管理磁盘空间 版本库的恢复 版本库的移植 版本库备份 添加项目 选择一种版本库布局 创建布局,导入初始数据 摘要 6. 配置服务器 概述 网络模型 请求和响应 客户端凭证缓存 svnserve,一个自定义的服务器 调用服务器 内置的认证和授权 创建一个用户文件和域 设置访问控制 SSH认证和授权 SSH配置技巧 初始设置 控制调用的命令 httpd,Apache的HTTP服务器 必备条件 基本的Apache配置 认证选项 基本HTTP认证 SSL证书管理 授权选项 整体访问控制 每目录访问控制 关闭路径为基础的检查 额外的糖果 版本库浏览 其它特性 支持多种版本库访问方法 7. 高级主题 运行配置区 配置区布局 配置和Windows注册表 配置选项 服务器 config 属性 为什么需要属性? 处理属性 特别属性 svn:executable svn:mime-type svn:ignore svn:keywords svn:eol-style svn:externals svn:special 自动属性设置 Peg和实施修订版本 外部定义 卖主分支 常规的卖主分支管理过程 svn_load_dirs.pl 本地化 理解地区 Subversion对地区的支持 Subversion版本库URL 8. 开发者信息 分层的库设计 版本库层 版本库访问层 RA-DAV(使用HTTP/DAV版本库访问) RA-SVN(自定义协议版本库访问) RA-Local(直接版本库访问) 你的RA库在这里 客户端层 使用API Apache可移植运行库 URL和路径需求 使用C和C++以外的语言 进入工作拷贝的管理区 条目文件 原始拷贝和属性文件 WebDAV 使用内存池编程 为Subversion做贡献 加入社区 取得源代码 开始熟悉社区政策 作出修改并测试 贡献你的修改 9. Subversion完全参考 Subversion命令行客户端:svn svn选项 svn子命令 svn add svn blame svn cat svn checkout svn cleanup svn commit svn copy svn delete svn diff svn export svn help svn import svn info svn list svn log svn merge svn mkdir svn move svn propdel svn propedit svn propget svn proplist svn propset svn resolved svn revert svn status svn switch svn update svnadmin svnadmin Switches svnadmin Subcommands svnadmin create svnadmin deltify svnadmin dump svnadmin help svnadmin hotcopy svnadmin list-dblogs svnadmin list-unused-dblogs svnadmin load svnadmin lstxns svnadmin recover svnadmin rmtxns svnadmin setlog svnadmin verify svnlook svnlook选项 svnlook svnlook author svnlook cat svnlook changed svnlook date svnlook diff svnlook dirs-changed svnlook help svnlook history svnlook info svnlook log svnlook propget svnlook proplist svnlook tree svnlook uuid svnlook youngest svnserve svnserve选项 svnversion svnversion mod_dav_svn mod_dav_svn Configuration Directives A. Subversion对于CVS用户 修订版本号现在不同了 目录的版本 更多离线操作 区分状态和更新 分支和标签 元数据属性 冲突解决 二进制文件和转化 版本化的模块 认证 转化CVS版本库到Subversion B. 故障解决 共同问题 使用Subversion的问题 每当我尝试访问版本库,我的Subversion客户端挂起。 每当我尝试运行svn,它告诉我工作拷贝已经锁定。 我在查找和打开版本库时得到错误,而我知道我的版本库URL是正确的。 我怎样在file://的URL中指定一个Windows驱动器盘符? 通过网络对Subversion版本库进行写操作发生问题。 在Windows XP下,Subversion服务器有时候看起来发送损坏的数据。 跟踪Subversion客户端和Apache服务器通话最好的方法是什么? 我刚刚编译了二进制分发版本,当我尝试检出Subversion,我得到一个“Unrecognized URL scheme”错误。 为什么svn revert命令要有一个明确的目标?为什么缺省不是递归的?它的行为方式与大多数其它子命令不同。 当我启动Apache,mod_dav_svn抱怨说发现一个“bad database version”,它发现了db-3.X而不是db-4.X。 我在RedHat 9得到“Function not implemented”错误,无法工作,我如何修正这个问题? 为什么日志说通过Apache(ra_dav)提交或导入的文件“(no author)”? 我偶然在Windows得到“Access Denied”错误,它们看起来随即出现。 在FreeBSD,某些操作(特别是svnadmin create)有时会挂起。 我可以在web浏览器看到我的版本库,但是svn checkout给我一个301 Moved Permanently错误。 我尝试察看我的文件的一个老版本,但是svn告诉我“path not found”。 C. WebDAV和自动版本化 WebDAV基本概念 仅是平常的WebDAV DeltaV扩展 Subversion和DeltaV 影射Subversion到DeltaV 自动版本化支持 选择mod_dav_lock 自动版本化交互性 Win32网络文件夹 Mac OS X Unix: Nautilus 2 Linux davfs2 D. 第三方工具 客户端和插件 语言绑定 版本库转化 高级工具 版本库浏览工具 E. 版权 术语表 插图清单 1.1. Subversion的架构 2.1. 一个典型的客户/服务器系统 2.2. 需要避免的问题 2.3. 锁定-修改-解锁 方案 2.4. 拷贝-修改-合并 方案 2.5. 拷贝-修改-合并 方案(续) 2.6. 版本库的文件系统 2.7. 版本库 4.1. 分支开发 4.2. 开始规划版本库 4.3. 拷贝后的版本库 4.4. 一个文件的分支历史 8.1. 二维的文件目录 8.2. 版本时间—第三维! 表格清单 2.1. 版本库访问URL 5.1. 版本库数据存储对照表 6.1. 网络服务器比较 8.1. Subversion库的摘要目录 范例清单 5.1. 使用svnshell浏览版本库 5.2. txn-info.sh(异常事务报告) 6.1. 匿名访问的配置实例。 6.2. 一个认证访问的配置实例。 6.3. 一个混合认证/匿名访问的配置实例。 6.4. 关闭所有的路经检查 7.1. 注册表条目(.reg)样本文件。 8.1. 使用版本库层 8.2. 使用Python处理版本库层 8.3. 一段检出工作拷贝的简单脚本 8.4. 典型的.svn/entries文件内容 8.5. 有效地池使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值