1.问题与案例

简介

3.应用环境

4.客户端安装

5.简单应用

6.复杂应用

问题与案例(一)

电脑发生故障,文件没有备份而丢失了

由于人员离职,导致某些资料丢失了

我怎么知道手头的公共资料是不是最新版呢?

想要追溯几个月前的某个状态,却发现那个版本的文件已经被当作垃圾删除了

每天要花费很多时间来向别人提供需要共享的资料

相似的应用系统,每次都重复开发,难以复用

一个软件被用于多个项目,发现其中存在一个BUG,所有这些项目都要进行修复

人员分布在两地开发,版本如何同步

甲乙两人为不同目的修改了同一份文件,乙的提交在甲提交之后,导致甲修改的内容丢失了

客户测试发现了BUG,开发人员却无法重现出来

SVN简介(二)

                                                             

一个开源的版本管理软件

可架设在Apache上,使用http或https协议访问;也可使用内置的svn协议访问 在Windows环境下,最常用的客户端为TortoiseSVN(简称TSVN)

在Linux/Unix环境下,用命令行方式操作

SVN的版本号指的不是某个文件的状态,而是整个库的状态

应用环境(三)

服务器端:CollabNet的SVN服务器端安装包(内含)

Windows客户端:推荐使用TortoiseSVN(以下简称TSVN)

可通过TSVN进行读、写操作

可通过IE浏览器进行读操作

可通过各种插件与开发工具集成

客户端安装(一)

安装文件: TSVN客户端:

TSVN中文语言包:

全部选择默认安装,安装完成后重启电脑

TSVN通过右键菜单与Windows资源管理器集成,没有自己的窗口界面

客户端安装(二)

TSVN通过右键菜单与Windows资源管理器集成,没有自己的窗口界面

 简单应用

TSVN右键菜单与图标

检出

更新

提交

增加

删除

改名

移动

TSVN右键菜单(一)

TSVN右键菜单(二)

TSVN图标

检出(一)

“检出”用于客户端第一次从SVN服务器上下载版本库数据

在客户端新建一个文件夹用于存放下载的数据

在新建文件夹上点右键,选择“SVN检出…”

检出(二)

在弹出窗口的“版本库URL”处填入版本库的访问地址,如:部门/XXXX项目/

点“确定”开始从SVN服务器下载数据

更新

“更新”用于客户端从SVN服务器下载最新版本

在受SVN控制的某层文件夹上(或文件夹内空白处)点右键,选择“SVN更新”,TSVN自动比较该文件夹客户端与服务器的版本差异,并下载最新版本到客户端

提交(一)

“提交”用于将客户端的改动上传到SVN服务器

在受SVN控制的某层文件夹上(或文件夹内空白处,或某文件上)点右键,选择“SVN提交…”

提交(二)

TSVN自动检查该文件夹客户端的改动,并将其列在弹出窗口的“变更列表”栏

在弹出窗口的“信息”栏写上对此次提交的注释,以便将来追溯

点击“确定”将客户端的改动上传到服务器

增加(一)

“增加”用于将新文件或文件夹纳入SVN的控制之下

在受SVN控制的某层文件夹上(或文件夹内空白处,或新增的某文件上)点右键,选择 “TortoiseSVN-增加”

增加(二)

如果“增加”是对文件夹进行操作,则会弹出窗口列出该文件夹下未受控的文件,点击“确定”将其纳入SVN控制

“增加”后文件图标从 变成

“增加”仅是对客户端的文件进行标注,并不上传到服务器,需要执行“提交”操作才会上传

删除(一)

“删除”用于从当前版本中删除文件或文件夹

在受SVN控制的文件夹中,通过Windows直接删除子文件夹或文件

或:在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-删除”

删除(二)

“删除”仅是对客户端的文件进行操作,并不改变服务器上的内容,需要执行“提交”操作才会将删除操作上传到服务器

将“删除”操作“提交”到服务器后,仅是从服务器的最新版本中删除了此文件或文件夹,在历史版本中仍可找回此文件或文件夹

改名(一)

“改名”用于在受SVN控制的状态下,对文件或文件夹改名
在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-改名”

改名(二)

“改名”仅是对客户端的文件进行操作,并不改变服务器上的内容,需要执行“提交”操作才会将改名操作上传到服务器

不要用Windows“重命名”来实现改名,因为这个操作不受SVN控制,SVN会将其理解为删除原文件、增加一个新文件,从而导致文件改名后不能跟踪到改名前的状态

改名(三)

改名的另一种方法:

在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-版本库浏览器”

在弹出窗口右键点击要改名的文件夹或文件,选择“改名”

由于是对服务器版本库直接操作,改名后将自动执行一次“提交”操作

改名完成后需要在客户端执行一次“更新”,以下载最新状态

移动(一)

“移动”用于在受SVN控制的状态下,移动文件或文件夹的位置

在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-版本库浏览器”

在弹出窗口拖动文件夹或文件到需要的位置

由于是对服务器版本库直接操作,移动后将自动执行一次“提交”操作

移动完成后需要在客户端执行一次“更新”,以下载最新状态

移动(二)

不要用Windows的拖动操作或“剪切”、“粘贴”来实现移动,因为这些操作不受SVN控制,SVN会将其理解为在原位置删除文件、在新位置增加文件,从而导致文件移动后不能跟踪到移动前的状态

复杂应用

更新至版本

还原

复原(回滚)

冲突及解决

分支/标记

合并

锁定/解锁

权限管理

更新至版本

“更新至版本”用于取出文件的某历史版本

在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-更新至版本…”

在弹出窗口中填写要取的版本号,点“确定”取回该版本

                              

还原(一)

“还原”用于放弃“增加”、“删除”、“改名”以及修改文件内容等客户端的本地操作,将客户端的数据恢复到改动前的版本状态

在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-SVN还原…”

还原(二)

在弹出窗口中查看要还原的内容,点击“确定”还原客户端数据

“还原”只能用于执行“提交”操作之前,即未将客户端的改变上传到服务器之前

复原(回滚)(一)

复原(回滚)用于将项目恢复到之前的某个版本状态,并在此版本基础上继续后面的工作

在受SVN控制的某层文件夹或文件上点右键,选择“TortoiseSVN-显示日志”

复原(回滚)(二)

在弹出的日志窗口中,右键点击要复原的版本,选择“复原到此版本”

复原结束后,执行“提交”操作,将此版本作为版本库的最新版本

冲突及解决(一)

冲突的产生:

当两人从同一个版本出发,修改同一份文件并提交时,这两个修改版本就会发生冲突,后提交的人会收到发生冲突的提醒,且提交失败,要求先进行更新操作

冲突及解决(二)

                        

不会导致冲突                                                                      可能导致冲突

冲突及解决(三)

发生冲突后,执行“更新”操作后:

对于发生冲突的文件,TSVN会加上冲突标记

如果发生冲突的文件是二进制文件(如doc文件、jpg文件),TSVN会增加2个文件,分别是起始版本和发生冲突的版本

如果发生冲突的文件是文本文件(如c文件、txt文件),TSVN会将工作副本中的原文件改名增加“.mine”后缀,将两个版本的冲突写入原名文件(文件中用<<<<<<<、=======、>>>>>>>加以标识),并另外增加2个文件,分别是起始版本和发生冲突的版本

冲突及解决(四)

例如:两人从第213版开始对和进行修改,甲先修改完成并提交形成217版,乙随后提交时发生冲突,则在乙的该文件夹下将会存在七个文件:

:自动合并了甲和乙的修改内容的

.r213:甲乙修改前的

.r217:甲修改后的strat.c

.mine:乙修改后的

:乙修改后的

.r213 :甲乙修改前的

.r217:甲修改后的

冲突及解决(五)

解决冲突:

手工将前一版本中的修改整合到自己的文件中

在冲突的文件或文件夹上点右键,选择 “Tortoise-已解决的…”,标记为冲突已解决(此时会自动删除多余的文件),然后再次“提交”

分支/标记(一)

分支: “分支”通常用于在不同的线上同时工作的情况

“分支”通常设置为分支的所有者拥有读写权限,其他人员仅有读取权限

标记 “标记”通常用于版本发布、标识基线状态等情况

“标记”通常设置为配置管理员拥有读写缺陷,其他人员只有读取权限

SVN使用同样的操作进行“分支”和“标记”

分支/标记(二)推荐的目录结构

                                              

分支/标记(三)案例一

分支/标记(四)案例二

分支/标记(五)案例三

分支/标记(六)创建分支

在受SVN控制的某层文件夹上点右键,选择“TortoiseSVN-分支/标记…”

在弹出窗口的“至URL”栏,填写分支的存放地址,通常将其存放到branches目录下,并加上分支的名称,如: 软件中心/project/branches/工行版

分支/标记(七)创建分支

在弹出窗口的“从此复制到版本库”处选择从“最新版本”或 “指定版本”或“工作副本”(工作副本可能是个混合版本)复制

在弹出窗口的“日志信息”栏填写注释信息,然后点击“确定”

在对应的文件夹执行“更新”操作,下载分支到客户端,之后对分支的操作均在此文件夹进行

分支/标记(八)创建标记

创建标记与创建分支类似,只是通常将其存放到tags目录下,如:软件中心/project/tags/Release_V1_0

标记实际是为某个版本做了个标签,不会为另存一份而消耗服务器的存储空间

合并(一)

合并:对两个版本树进行比较,然后将区别应用到本地副本(合并后需进行“提交”操作)

例如:在分支A上进行了一系列修改,现在要将这些修改合并到主干上,则可比较建立A分支的版本与A分支最终版本之间的差异,并将差异应用到主干上

可从分支合并到主干,也可从主干合并到分支,也可从分支A合并到分支B 可选择合并创建分支以来的所有改变,也可选择合并创建分支以来的某几个版本的改变

合并(二)

在目标文件夹上点右键,如要将“branches/工行版”分支的内容合并到主干上,则在“trunk”文件夹上点右键,选择“Tortoise-合并…”

在弹出窗口选择“合并一个版本范围”(常用选择)

点击“下一条”

合并(三)

在“合并的源URL”处选择要合并进来的分支地址,如:软件中心/project/branches/工行版

在“待合并的版本范围”处填入合并的版本范围,可点击边上的“显示日志”选择版本

点击“下一条”

合并(四)

合并深度选择默认的“工作副本”

“比较空白字符”、“忽略空白字符的变化”等选择用于对文本文件的比较

“测试合并”可在正式合并之前测试合并结果,比如是否存在冲突等

点击“合并” 若未发生冲突,可在合并后执行“提交”操作

合并(五)

若合并时发生冲突,通常可在弹出窗口选择“以后解决”,在本地副本中冲突的文件处将增加2个文件(对二进制文件)或3个文件(对文本文件)

手动解决冲突后,使用“Tortoise-已解决的”标记冲突已解决,然后执行“提交”操作

锁定/解锁(一)

为了便于多人协作,SVN不提倡“锁定-修改-解锁”的方式

由于存在冲突解决的机制,通常多人可对同一份文件进行修改,而不会导致严重问题

但在某些情况下,比如对一张图片进行修改时,两份冲突的图片文件将很难被整合到一起,这时建议用锁定/解锁的方式

锁定/解锁(二)

锁定方法一

在需要锁定的文件夹或文件上点右键,选择“Tortoise-属性”

在弹出的“属性”窗口选择“新建…”,在弹出的“增加属性”窗口,选择“svn:needs-lock”属性,并点“确定”增加属性

执行“提交”操作,将属性的改变上传到服务器,若他人执行更新操作,将看到文件被设置为只读

     

锁定/解锁(三)

在设置了needs-lock属性的文件或文件夹上点右键,选择“SVN获取锁定…”,以获取锁的拥有权

在弹出窗口输入锁定的原因等注释信息,然后点击“确定”获取锁定

获取锁的拥有权后,文件将被标识为

     

锁定/解锁(三)

锁定方法二

在要锁定的文件或文件夹上点右键,选择“Tortoise- 获取锁定”,即可锁定并拥有其所有权,文件将被标识为

采用此锁定方法时,并不会自动设定svn:needs-lock属性,别人更新后也看不到此标记,但可阻止别人的提交

锁定/解锁(四)

锁定后,他人提交时将被报告文件已被锁,并提交失败 解锁:

对应锁定方法一:在锁定的文件夹或文件上点右键,选择“Tortoise-属性”,删除svn:needs-lock属性,然后提交

对应锁定方法二:当拥有锁的人提交被锁定文件时,锁将被自动取消(而且当前拥有的所有锁都将被解除);也可通过“解除锁定”来解锁 窃取锁:他人可通过“获取锁定” (勾选“偷取此锁定”)来窃取锁的拥有权

强制解锁:当拥有锁的人忘记解锁时,他人可通过SVN命令行强制解锁(TSVN目前不提供该功能,可通过窃取锁+解锁实现)

权限管理

管理员可通过修改服务器上的权限文件,实现对权限的控制

权限分为三种:无权限、只读权限和读写权限

权限的控制以文件夹为最小单位

可对单个用户的权限进行控制,也可以对用户组的权限进行控制

 SVN目录结构

svn忽略不需要同步的文件夹_配置管理-SVN使用指南 - wuli潇潇相关推荐

  1. .svn文件夹_新建SVN仓库并上传项目

    需求:服务器为linux,现在本地有一个项目需要上传svn linux搭建SVN服务器:https://blog.csdn.net/s735819795/article/details/8049760 ...

  2. OneDrive同步任意文件夹

    Onedrive同步文件夹设置 一般情况下,OneDrive文件夹会在C盘的user下面存储. => 修改OneDrive默认存储文件夹 参考链接: 更改 OneDrive 文件夹的位置. 在任 ...

  3. git 如何忽略掉文件夹_#PY小贴士# 我的git仓库为什么每次提交都有很多改动?

    git 是如今最流行的代码版本管理工具,没有之一. 今天说一个 git 使用时的细节:.gitignore 我们在使用 git 管理代码时,如果默认把项目里的所有文件都 add 进去,加入到仓库中,会 ...

  4. win10同步服务器文件夹在哪,win10系统一键同步win 10文件夹视图的操作方法

    win10系统一键同步win 10文件夹视图的操作方法? 很多win10用户在使用电脑的时候,会发现win10系统一键同步win10文件夹视图的的现象,根据小编的调查并不是所有的朋友都知道win10系 ...

  5. Mac技巧|如何阻止 iCloud 同步某个文件夹?

    使用 iCloud 的过程中,难免遇到有些文件夹你不希望同步.比如游戏制作,视频剪辑等的工程文件,iCloud 的持续同步机制会使得这些文件夹中的部分文件持续处于被上传且不可用状态.今天小编就给大家带 ...

  6. Onedrive同步任意文件夹(Windows)

    下文笔者讲述在Onedrive中同步任意文件夹的方法分享 Onedrive简介 onedrive是微软用于在线协同编辑文件,及数据备份的一个组件,当然日常生活中,我们常使用Onedrive备份文件夹, ...

  7. 使用Lsyncd同步本地文件夹

    场景     主机挂载了分布式文件系统,由于需要更换分布式文件系统,需要将分布式文件系统内2T的数据拷贝到主机本地,并实现增量同步.试了几种工具,感觉还是lsyncd最简单,最适合本地文件夹之间的增量 ...

  8. OneDrive 设置同步任意文件夹

    OneDrive 设置同步任意文件夹 原理:使用 mklink命令. mklink 介绍: mklink 指令可以创建文件夹的链接(类似快捷方式) mklink 指令属于 Windows 中 cmd ...

  9. icloud同步指定文件夹停止同步操作方法【图文】

    使用iCloud的过程中,难免遇到有些文件夹你不希望同步.比如游戏制作,视频剪辑等的工程文件,iCloud的持续同步机制会使得这些文件夹中的部分文件持续处于被上传且不可用状态. icloud同步指定文 ...

  10. windows OneDrive 同步任意文件夹 同步被挂起

    参考文章:同步挂起问题解决 – Onedrive使用mklink实现同步任意文件夹 网上大部分的都是:mklink /d <你的onedrive同步目录>\workspace\ D:\wo ...

最新文章

  1. 电动双联电位器ZW1613
  2. 一秒回到P图前:Adobe发布“反向PS”利器,知道你修过哪里,还帮你修回去
  3. VMWare虚拟机下为Ubuntu 12.04.1配置静态IP(NAT连接方式)
  4. 代码实现【mini版】——给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?
  5. Spring如何引用properties文件里的配置
  6. 操作基本数据类型的流/数据流
  7. linux 跟踪运行的进程,使用 Linux 的 strace 命令跟踪/调试程序的常用选项
  8. web@h,c小总结
  9. MQ队列管理器_PMTS命令
  10. eclipse 快捷调整字体_eclipse字体大小设置快捷键
  11. 打游戏 cpu占用率多少是正常的_游戏玩家的CPU选择
  12. python读取grd数据_Matlab读取grd格式的文件
  13. 出现504怎么办?由于服务器更新导致的博客报504错误[详细记录]
  14. aardio - 小窍门及注意事项收集贴
  15. ##英语文本的单词统计 排序并输出前5%
  16. 2015年数据结构第五题(输出二叉树的最长一枝)(C/C++)
  17. 人工智能中的分析学快速入门之知识体系
  18. Struts2漏洞分析与复现合集
  19. 微型计算机杂志出版日期,微型计算机杂志
  20. 推荐系统【炼数成金】未完

热门文章

  1. 与朋友谈心,也是与自己谈心
  2. 装机必备的浏览器推荐,干净好用,选这4款不会出错
  3. 二硫键交联的巯基化壳聚糖水凝胶/pH、离子强度敏感性的壳聚糖水凝胶CS-GA-ASP
  4. html图片爆炸效果,HTML5特效图片爆炸效果点击后文字会炸开
  5. 夏天第一图noob sky
  6. 一个人是否靠谱,闭环很重要(有深度)
  7. jenkins 并发构建Android 报错:Gradle build daemon disappeared unexpectedly (it may have been killed or may
  8. 计算机课程教学质量分析,课程教学质量分析报告.PDF
  9. 双线服务器托管因时代的发展产生的优势
  10. top1-Accuracy,top5-Accuracy举例精析