《SVN宇宙版教程》:第一章 SVN中的权限管理与Import和Checkout详解-3

1.8 细化Import界面功能

前面的章节已经实现案例:

  1. 使用匿名用户进行读写操作
  2. 对匿名用户屏蔽写操作,只拥有读操作
  3. 对匿名用户屏蔽读写操作
  4. 添加账号ghy用于管理SVN仓库中的代码

在本章节中将对Import界面进行功能上的细化。

1.8.1 创建测试用的环境

需要进行如下的2个配置步骤:

  1. 创建全新的账号abc密码为123。
  2. 创建名称为abc的仓库

    仓库的目录结构如1.95所示。

1.95 仓库abc的目录结构

 

    在桌面创建abctxt文件夹,在abctxt文件夹中创建空的a和b文件夹,再创建空的c.txt文件,如1.96所示。

1.96 创建源数据

 

1.8.2 Import界面的介绍

    对文件夹abctxt执行Import菜单后弹出界面如图1.97所示。

图1.97 默认的Import界面

 

在界面中有几个配置需要注意:

  1. URL of repository:设置仓库的位置
  2. Recent messages:是最近的Import/Commit的注释信息,显示的内容不仅仅是当前仓库,也包含操作其它仓库的注释信息。如果从未写过注释信息则单击按钮“Recent messages”显示界面为空,如图1.98所示。

图1.98 无历史消息

  1. 大文本块:设置本次Import的注释信息
  2. Include ignored files:是否忽略某些文件
  3. Enable Auto-Properties:是否允许添充标签

 

    前面5点中其中第4和第5点需要进一步掌握。

1.8.3 Include ignored files选项

Checkbox选项Include ignored files翻译成中文就是“包含忽略的文件”,那在SVN中肯定是有一个忽略文件的列表,某些文件在Import时是不需要上传到仓库中的,也就是对这些文件进行了忽略过滤,那如何使用Include ignored files选项呢?

Step01:使用这些忽略文件列表在哪?单击菜单如图1.99所示。

图1.99 单击Settings菜单

 

    Step02:弹出界面如图1.100所示。

图1.100 显示Settings界面

 

其中“Global ignore pattern”就是忽略的文件扩展名列表,其中包含扩展名为o的文件。

Step03:为了测试Import忽略文件的效果,在桌面的abctxt文件夹中创建1个名称为ghy.o的空文件,如图1.101所示。

图1.101 创建ghy.o空文件

 

    Step04:对文件夹abctxt使用Import菜单,弹出界面如图1.102所示。

图1.102 准备上传abctxt文件夹中的内容

 

    Step05:单击OK按钮出现界面如1.103所示。

1.103 ghy.o没有被上传

 

    Step06:仓库中的内容如1.104所示。

1.104 再次确认没有ghy.o文件

 

Step07:如果想上传ghy.o怎么办?对Include ignored files选项打上勾即可。

进行到下一步之前,需要注意,一定要先删除abc仓库中的所有内容如1.105所示。

1.105 清空abc仓库

 

Step08:重新对abctxt文件夹单击Import菜单弹出界面,对Include ignored files复选,效果如1.106所示。

1.106 对Include ignored files复选

 

    Step09:单击OK按钮弹出界面如图1.107所示。

图1.107 成功上传ghy.o文件到仓库中

 

    仓库中的内容如图1.108所示。

图1.108 仓库中出现ghy.o文

 

1.8.4 Enable Auto-Properties选项

单击Import菜单后还有1个Enable Auto-Properties选项,它的主要作用就是在Import时是否对导入的某些文件中的标签进行自动识别并添充内容,比如自动添加日期,作者等信息。

Step01:在桌面中创建名称为x的文件夹,在其内部创建1个名称为userinfo.txt文件,内容如图1.109所示。

图1.109 userinfo.txt文件内容

 

    Step02:需要注意的是,一定要对userinfo.txt文件设置编码为utf-8,不然向标签中添充文本时时会出现乱码,如图1.110所示。

图1.110 在editplus软件中设置编码为utf-8

 

Step03:对文件夹x执行Import菜单,弹出界面如图1.111所示。

图1.111 欲对x文件夹进行上传

 

    Step04:单击OK按钮,成功提交到仓库,效果如图1.112所示。

图1.112 userinfo.txt成功被提交到仓库

 

    但文件的内容还是保持不变,如图1.113所示。

图1.113 userinfo.txt文件内容不变

 

    Step05:所以这是一个失败的操作,将userinfo.txt删除,如图1.114所示。

图1.114 在仓库中删除userinfo.txt文件

 

    Step06:下一步如何解决呢?进入Settings界面如图1.115所示。

图1.115 进入Settings界面

 

Step07:单击右下角的Edit按钮,弹出编辑配置文件,更改的内容一共是2项:

(1)删除enable-auto-props = yes选项前面的注释#变成可用

(2)*.txt = svn:keywords=Author Date Id Rev URL;

    更改的办法就是去掉前面的#注释符号,注意在当前行的最前方不要留有空格,更改后的配置文件代码如图1.116所示。

图1.116 更改2处的配置文件

 

Step08:将服务CollabNet Subversion svnserve重新启动。

Step09:对x文件夹再次执行Import菜单进行上传,上传后的userinfo.txt内容如图1.117所示,尽量不要使用IE进行查看userinfo.txt文件,如果有缓存则显示旧的数据。

图1.117 userinfo.txt中的标签被替换

 

    Step10:在Import时使用其它3个标签得出的结果如下:

$Id: userinfo.txt 10 2009-05-27 06:53:27Z abc $

$Rev: 10 $

$URL: file:///C:/svn_repository/abc/userinfo.txt $

 

1.9 细化Checkout界面功能

操作Checkout就是提取代码。

1.9.1 创建测试用的仓库checkoutTest

在仓库根文件夹中创建名称为checkoutTest的仓库,如图1.118所示。

图1.118 创建checkoutTest仓库

 

    创建Import仓库用的文件夹结构如图1.119所示。

图1.119 checkoutdata文件夹中的结构

 

    在checkoutdata文件夹中一共有3个文件夹a和b和c,还有4个txt文件z.txt和1.txt,b.txt和c.txt,一共7个资源。

1.9.2 对仓库checkoutTest执行Import命令

    对文件夹checkoutData执行Import命令如图1.120所示。

图1.120 对文件夹checkoutData执行Import命令

 

    单击OK按钮后成功Import,运行提示如图1.121所示。

图1.121 成功Import文件到仓库

 

    成功导入了7个资源。

1.9.3 导出全部资源

    Step01:在c盘创建文件夹checkoutThis,并对文件夹执行Checkout命令,界面运行如图1.122所示。

图1.122 界面checkout配置

 

选项URL of repository是设置仓库的位置。

选项Checkout directory是设置仓库要往哪个路径中进行导出。

选项Checkout Depth是设置仓库中文件夹导出的深度,在这里选择“Fully recursive”代表全部导出。

 

    Step02:单击OK按钮后成功Checkout,如图1.123所示。

图1.123 成功checkout

 

Step03:进入CMD控制台,输入命令:

tree C:\checkoutThis /f

显示checkoutThis文件夹查看其结构如图1.124所示。

图1.124 导出成功后的checkoutThis文件夹结构

 

    Step04:成功checkout导出7个用户自定义资源。

说明在默认的Checkout导出界面中选择“Fully recursive”选项会导出全部的资源。

1.9.4 导出子文件及子目录

    Step01:在c盘创建文件夹b,对其执行checkout操作,如图1.125所示。

图1.125 选择Immediate children,including folders

 

    Step02:单击OK按钮后出现提示如图1.126所示。

图1.126 成功导出文件夹a和z.txt文件

 

    成功导出5个资源,上面的示例说明如果选择“Immediate children,including folders”选项则会把仓库中的子资源进行导出,而不包含子孙资源。

    Step03:仓库根文件中的5个资源如图1.127所示。

图1.127 仓库根文件中的5个资源

 

    Step04:在CMD中的文件夹结构如图1.128所示。

图1.128 CMD中b文件夹里有5个资源

 

1.9.5 导出子文件

    Step01:在c盘中继续创建名称为c的文件夹,并执行Checkout命令,界面如图1.129所示。

图1.129 导出仓库中的资源到c文件夹

 

    Step02:单击OK按钮导出内容如图1.130所示。

图1.130 仅仅导出了文件

 

    Step03:成功导出1个资源,上面的示例说明如果选择“Only file children”选项则会把仓库根文件夹中的子文件资源进行导出,而不包含任何的文件夹。

    Step04:在CMD中的文件夹结构如图1.131所示。

图1.131 CMD中c文件夹里有1个文本文件资源

 

1.9.6 不选择文件导出空仓库

    Step01:在c盘创建文件夹d,对其执行Checkout命令如图1.134所示。

图1.134 对文件夹d执行Checkout命令

 

    Step02:单击OK按钮后的提示如图1.135所示。

图1.135 什么都没有导出

 

    上面的示例说明如果在d文件夹中使用Checkout命令时选择Only this item选项默认是什么都不导出的。

    Step03:可以在文件夹d右键属性中查看信息如图1.136所示。

图1.136 文件夹d并不是空的为什么?

 

    因为有一个隐藏的文件夹,是SVN的配置信息如图1.137所示。

图1.137 SVN的配置信息

 

    但d文件夹中并没有出现用户自定义的资源,包括文件或文件夹。

    Step04:另外还可以直接在C盘中直接调用Checkout命令如“图1.138所示。

图1.138 仓库checkoutTest自动导出到c:\ checkoutTest文件夹中

 

    Step05:单击OK按钮,c:\checkoutTest文件夹中除了SVN配置文件外依旧还是空的,如图1.139所示。

图1.139 空的checkoutTest文件夹

 

上面的示例说明如果选择“Only this item”选项则不会把仓库中的任何文件进行Checkout导出操作,还会在硬盘中自动创建与仓库同名的文件夹。

选项“Only this item”的作用是导出一个空的文件夹,也就是什么也没有导出,那“Only this item”选项的作用到底是什么呢?在后面的章节有介绍,请留意此知识点。

1.9.7 导出指定文件

    Step01:前面的章节已经成功将checkoutTest仓库中的内容Checkout导出到c:\checkoutThis文件夹如图1.140所示。

图1.140 成功导出到c:\checkoutThis文件夹

 

    如果想重复对checkoutThis文件夹调用Checkout菜单却出现如下情况图1.141所示。

图1.141 消失不见的Checkout菜单

 

    Step02:这是怎么回事?就是因为隐藏文件夹.svn造成的,如果文件夹中一旦有.svn文件夹,说明此文件夹已经被Checkout过,并不可以重复的执行Checkout操作,所以只需要清空checkoutThis文件中的内容即可,效果如图1.142所示。

图1.142 checkoutThis被清空

 

    Step03:再对文件夹checkoutThis执行Checkout时就出现Checkout菜单,如图1.143所示。

图1.143 菜单Checkout重新出现

 

    Step04:执行Checkout菜单后弹出界面如图1.144所示。

图1.144 选择Fully recursive的界面选项

 

Step05:在下面的内容中将继续测试Choose items…和Omit externals选项的功能。

选项Choose items…的作用可以让操作者自己选择欲导出文件的列表。

选项Omit externals的作用可以忽略当前仓库引用外部仓库中的代码。

    Step06:单击Choose items…按钮后弹出界面如图1.145所示。

图1.145 只Checkout出z.txt文件到checkoutThis文件夹

 

    Step07:单击OK按钮,再单击Checkout界面中的OK按钮后显示的信息如图1.146所示。

图1.146 只导出了z.txt文件

 

    Step08:文件夹中的内容如图1.147所示。

图1.147 文件夹中只有z.txt文件

 

1.9.8 忽略引用的仓库

Omit externals选项的知识点可以引出如何在SVN中一个仓库引用另外一个仓库的知识。

为什么要引用仓库或项目呢?比如有如下的情况,公司开发了一个比较通用并且比较复杂的分页功能的模块,所以得单独为分页功能的模块创建一个仓库,这时名称为a和b的项目要使用到分页的模块,这时就是a和b项目引用分页项目的情况,这就是SVN中的项目引用。

为了演示Omit externals选项的作用,下面将分为3个步骤开始讲解。

Step01:创建page和a和b仓库并配置演示环境

    创建3个仓库如图1.148所示。

图1.148 创建3个仓库

 

Step02:在桌面创建pagedata文件夹,在文件夹中创建page.java空文件如图1.149所示。

图1.149 创建page.java空文件

 

Step03:并对文件夹pagedata执行Import菜单命令,将page.java文件成功导入到page仓库中,效果如图1.150所示。

图1.150 成功上传page.java文件到page仓库中

 

Step04:建立SVN仓库项目引用关系

    仓库page中有了page.java代码,而a和b项目想把page仓库引入到a和b项目中。

    对仓库a执行“Repo-browser”菜单如图1.151所示。

图1.151 对a仓库执行Repo-browser菜单

 

    在弹出的界面中选择右键菜单的“Show properties子菜单”如图1.152所示。

图1.152 单击Show properties子菜单

 

    弹出界面如图1.153所示。

图1.153 单击New…按钮

 

    单击New…按钮弹出菜单选择“Externals”子菜单,如图1.154所示。

图1.154 选择Externals菜单

 

    弹出界面如图1.155所示。

图1.155 准备创建Externals

 

    单击New…按钮创建Externals,弹出界面如图1.156所示。

图1.156 在a仓库中引用page仓库

 

    配置完成后依次单击OK按钮完成Externals对象的创建,成功创建的Externals会在图1.157界面中进行显示:

图1.157 成功创建了项目引用

 

    这时可以在a仓库中看到引用了page仓库,效果如图1.158所示。

图1.158 a仓库中出现page仓库的图标

 

Step05:测试并使用项目的引用关系功能

上面的步骤已经成功在a项目中引用了page项目,下面开始测试并使用这个功能。

Step06:在桌面创建名称为a_checkout的文件夹,并对其执行Checkout菜单效果如图1.159所示。

图1.159 对a_checkout文件夹执行checkout操作

 

    Step07:对Omit externals选项不复选并单击OK按钮成功Checkout,文件夹a_checkout中的内容如图1.160所示。

图1.160 在a_checkout文件夹中将page仓库中的内容也一同导出

 

    Step08:文件夹page中的内容如图1.161所示。

图1.161 文件夹page中的内容

 

通过上面的步骤可以发现,将引用的项目page中的内容也一同进行了导出,如果这时对page.java文件进行了编辑,那么当对a_checkout文件夹进行Commit提交时,是不将page.java进行提交,也就是Commit提交时不提交更新引用项目里面的资源。

Step09:下面开始测试本示例的主题:Omit externals选项的作用。

将文件夹a_checkout中的内容全部清空,再执行Checkout操作,界面如图1.162所示。

图1.162 Omit externals选项已复选

 

    Step10:单击OK按钮后文件夹a_checkout中并没有page仓库的代码,如图1.163所示。

图1.163 Omit externals选项复选后并没有导出page仓库

 

1.9.9 导出指定修改版本

    在Checkout界面中的下方有一个Revision选项,如图1.164所示。

图1.164 Revision选项

 

    Revision的作用就是Checkout导出指定历史版本的文件。

为了测试Revision功能的使用,创建新的仓库名称为c,下面的步骤有可能比较繁琐,但并不复杂:

  1. 在桌面创建cdata文件夹。
  2. 在cdata文件夹中首次创建c1.txt,设置内容为c1_1。再创建c2.txt文件,设置内容为c2_1,如图1.165所示。

图1.165 文件c1.txt和c2.txt内容

 

  1. 对cdata文件夹调用Import菜单,界面如图1.166所示。

图1.166 进行第一次的Import操作

 

    单击OK按钮成功Import导入,效果如图1.167所示。

图1.167第一次的Import操作成功导入

 

    用IE浏览仓库c内容如图1.168所示。

图1.168 IE中的仓库c中的内容

 

    用TortoiseSVN的Repo-browser菜单浏览的内容如图1.169所示。

图1.169 2个txt的Revision版本号都是2

 

    Revision版本号都是2说明c1.txt和c2.txt文件都是同一批次导入的。

    (4)在桌面创建c_checkout文件夹,然后将c仓库中的内容进行Checkout操作,如图1.170所示。

图1.170 对c仓库执行Checkout操作

 

    (5)更改文件内容如图1.171所示。

图1.171 对2个txt文件内容进行更改

 

    并对c_checkout文件夹调用Commit提交菜单,如图1.172所示。

图1.172 执行Commit菜单

 

    单击OK按钮后成功提交,效果如图1.173所示。

图1.173 成功Commit操作

 

    仓库中的Revision版本号更改为3,效果如图1.174所示。

图1.174 Revision变成值3

 

    (6)继续只对c_checkout文件夹中的c1.txt进行编辑,内容为c1_3,如图1.175所示。

图1.175 c1.txt单独被编辑内容为c1_3

 

    再次对c_checkout文件夹进行Commit操作,仓库中的Revision的值有差异了,效果如图1.176所示。

图1.176 c1值为4而c2值为3

 

    说明c1.txt文件和c2.txt文件并不是同一批次被编辑的。

回顾一下过程:

  1. Revision值为2时:c1.txt文件内容为c1_1c2.txt文件内容为c2_1
  2. Revision值为3时:c1.txt文件内容为c1_2c2.txt文件内容为c2_2
  3. Revision值为4时:c1.txt文件内容为c1_3c2.txt文件内容为c2_2

     好!系统中的环境已经搭建完毕,下面开始测试Revision选项的作用。

    (7)在桌面创建test1文件夹,并对其调用Checkout菜单,如图1.177所示。

图1.177 对test1执行Checkout菜单

 

    而此步骤Revision选择的是“HEAD revision”,含义是根据每个文件最大的Revision版本号进行导出,也就是取得每个文件的最新版,所以在此预测,test1文件夹中c1.txt文件内容是c1_3,c2.txt文件内容是c2_2。单击OK按钮开始Checkout,查看文本文件内容如图1.178所示。

图1.178 和预测的结果一样

 

    (8)继续测试指定Revision值的情况,在桌面创建test2文件夹,对其执行Checkout菜单如图1.179所示。

图1.179 指定导出Revision的值为3

 

根据前面的总结:

Revision值为3时:c1.txt文件内容为c1_2c2.txt文件内容为c2_2

所以单击OK后的运行效果如图1.180所示。

图1.180 再次预测成功

 

按钮Show log的作用可以查看以往仓库中的更改的历史,另外还可以在Show log界面中根据指定的revision版本号进行指定revision版本号的Checkout导出操作,关于单击Show log按钮所弹出界面的解释请参看后面的章节。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值