SVN使用说明

SVN简介

名称:SVN(Subversion的简称,开源的版本控制系统)

厂商:开源项目(CollabNet发起并提供启动资金,目前Wandisco是贡献最多的全职Subversion开发者并担任release manager.)

功能:支持创建分支、标志,支持回滚、事务等。

优点:安装操作都比较简单,支持跨平台,跨地区管理代码;有较快的速度;支持文件重命名;支持不锁定开发;管理方便,符合大众思维习惯;易于上手,代理一致性较高。

缺点:适合中小型项目,人数在几十人为佳;不适合人数较多的项目,比如开源项目;服务器开销较大,数据库容易暴增;不能离线工作,没连接服务器,不能进行对比,还原,提交等工作。

升级:开源项目,管理比也比较规范,升级很及时,不断有新版本出来,本文编写时就有新版本1.9.3.27038更新了(2天前更新,可见很及时)。

推荐:★★★★ (中、小型项目适用)

3.SVN的安装和使用

首先SVN和其他版本控制工具一样,有Server端和Client端,下面分别介绍安装和使用。

3.1 安装包下载

安装包,我们可以从官方网站下载,官网提供了Linux和Windows各种版本,可以使用,我们主要介绍Windows下的安装使用 

下载URL:http://subversion.apache.org/packages.html 

拉到最底下

 如上图,有两个我们需要的安装包,先点击第一个"TortoiseSVN" 这是一个客户端工具,主要用于和WINDOWS资源管理器绑定,进行文件管理

点击进入“小乌龟”下载网站如下:



分别提供了32位和64位两种版本,根据我们操作系统下载对应的。下面是各种语言包。我们下载简体中文

然后,我们点击图1的第二个地址,进入服务端和VS插件下载网站,如下图:

我们下载“VisualSVN for Visual Studio” 这个主要用于VS开发源代码版本控制。

再下载“VisualSVN Server”这个就是服务器上需要安装的管理工具。

一共有四个安装包,下载后如下:

 

我是64位操作 系统,下载的全是64位,可根据自己的操作系统下载32位或64位

3.2 SVN服务端安装

双击下载的“VisualSVN-Server-3.5.0-x64.msi”进入SVN服务器安装

 

下一步

 选择同意声明,点下一步

按默认,安装服务器及管理员工具 和 命令行工具,点下一步

这里我们选择标准版即可,企业版需要每台服务器支付950美元,标准版免费,并且其功能基本可以满足我们的使用需要。点下一步

这里 Location 为安装路径,Repositorys为数据库存放地址,下面是端口号和是否使用安全连接,按默认即可,点下一步,

配置完成,点Install安装

安装完成,选择启动SVN服务器。

3.3 SVN服务端使用

3.3.1创建版本库

打开刚才安装好的SVN服务器端,“VisualSVN Server Manager”如下

 

服务端主界面 右边为一些状态信息,左边是我们创建的版本库,用户及组。

在版本库上右击,打开菜单,分别为 创建版本库,导入已存在的版本库,浏览。

我们点击“Create New Repository..”创建一个新的版本库,打开窗口如下:

这里是选择版本库类型,我们按默认,点下一步

这里输入一个版本库名称,点下一步。

这里我们按默认,选择 创建一个空的版本库,点下一步,

这里是给新创建的版本库,设置认证方式,我们按默认,选择“所有用户都具有读写权限”点击创建,完成版本库的新建。

 

 点完成,结束版本库创建。

3.3.2 创建用户

下面创建用户,如下图:

右击 Users 打开创建用户对面框,输入用户名和密码,点击OK,

右击 组 ,点击 创建组

输入组名 Dev,点击下面的 添加,把前面创建的用户 yu 加入到该组,点OK

3.3.3 用户授权

在前面创建的版本库名 MyObject上右击,打开菜单中选 Properties...

 

打开的权限窗口如下,我们点击 Add..添加用户或组,在这里,我们可以选择组,则表示该组下的所有都具有相应权限,也可以单选用户

 

我们选择dev组名,然后在Permissions中选择 可读可写 权限,如下图

至此,服务端配置完成。

3.4 SVN客户端安装

下面我们进行SVN客户端安装,找到我们之前下载的安装包,

 

先安装“小乌龟”TortoiseSVN-1.9.3.27038-x64-svn-1.9.3.msi,再安装语言包LanguagePack_1.9.3.27038-x64-zh_CN.msi

 

客户端的安装没什么好说的,全程下一步。

语言包的安装也是全程下一步(如果喜欢英文版,这步可以省略)

语言包安装后,并不会马上显示所安装的语言,需要一步设置。

我们在开始菜单中,找到 TortoiseSVN的设置,也可以在你的电脑上任何文件上右键打开setting 

打开设置窗口,点击 General ,在右边的语言选项中,选中简体中文 ,即可完成语言设置。

至此,客户端安装完成。 

3.5 SVN客户端基本操作

这节是重点,将学习如何使用SVN进行版本控制

3.5.1 签出项目文件

首先我们在客户端电脑上创建一个项目文件夹,MyObject

 

右击项目文件夹,点签出

打开签出窗口,

在这里,我们要输入前面服务端中创建的版本库地址,我们可以在Server端Copy这个地址,打开Server端

右击版本库,点击复RUL,然后粘贴过来

签出深度有几项可以选择,这里我们默认全递归,即可。点击确定

这时会弹出一个认证窗口,在这里需要验证一下用户,使用我们服务端创建的用户

下面的保存认证,默认为选中,选中后,下次再执行签出等操作 ,则无需再次验证。如果本台电脑为你一个人使用,可以保存,如多人使用,请注意安全。

点击确定后,如果认证用户成功,则签出完成。

 签出完成后,因为我们的版本库中并没有任何文件,因此本的项目文件夹也是空的,此时,我们如果显示隐藏文件及文件夹

可以看到,文件夹MyObject中多了一个隐藏文件夹

.svn这个隐藏文件夹中记录着非常重要的信息,包括工作文件版本和本地副本时间等,千万记住,不要手动修改或删除,否则你本地的副本将被破坏,无法进行正常版本控制了。

3.5.2 文件9种图标含义

我们在安成SVN客户端安装后,需要重启电脑或注销电脑,就会发现加入版本库的本地文件或文件夹有一个SVN专有小图标,一共有9种,以下是几种图标的含义:

绿色的勾:图标表示这是一个最新取出的工作副本,他的Subversion状态是normal。

灰色的勾:灰色图标表示”只读”,如果你给一个文件设置了svn:needs-lock属性,Subversion会让此文件只读,直到你获得文件锁。只读文件具有这个重载图标来表示你必须在编辑之前先得到一个锁。

红色感叹号:当你开始编辑一个文件,这个文件的状态就会变成modified,图标也会变成红色圆圈带一个感叹号。这样你就可以轻易的知道自从上次更新以来都有修改过哪些文件,需要提交哪些文件。

黄色感叹号:三角符号带感叹号,表示在一次update中产生了一个冲突(conflict)。

蓝色加号:意味着这个文件或文件夹已经被计划加入到版本控制之下。

红叉叉:表示相应文件或文件夹被计划删除(deleted),或者表示文件缺失。

灰色一行:表示不受版本控制,忽略版本控制。

蓝色问号:暂时还没收到版本的控制,但是没有被忽略。

锁扣:表示文件被锁定,他的Subversion状态是normal,必须先释放锁才能让别人的更改提交。

其实这个图标,我们也可以在SVN客户端设置中去更改样式,下面是SVN的几种样式,可供选择。(不得不说,SVN想的非常周到,优秀软件就该如此)

3.5.3 添加文件到版本库(Add)

 新文件的添加,有两种方法,一是点Add(加入)先加入到变更列表,再提交;二是直接提交,

个右键菜单分别对应 加入和更新,

如果先 点加入后,再提交,文件会自动选中,并且状态为 增加,如果直接提交,需要手动选中该文件,如下图,点击确定,完成文件添加。

此时,我们在服务端中,点击刷新版本库,会发现已经成功加入了一个新文件。

3.5.4 删除文件(Delete)

如果被删除的文件,还没有加入到版本库,则可以直接删除,如果已加入版本库,则需要通过右击文件,选中SVN中的删除

 

 删除文件后,其父目录会有一个红色叹号,表示该目录下的文件被修改了,此时,我们需要提交一次父级目录。

3.5.5 文件改名(Rename)

 修改文件名,选中需要重命名的文件或文件夹,然后右键“TortoiseSVN更新文件名“,在弹出的对话框中输入新名称,点击”确定”按钮,并将修改文件名后的文件或文件夹通过 “SVN 提交”提交到SVN服务器上。

3.5.6 还原(Revert)

还原文件或文件夹到以前的版本,如下

右击文件或文件夹,在TortoiseSvn,点击 更新至版本....

打开版本更新窗口,在显示日志中选择前期版本或在版本号中输入要回退的版本号,即可。

3.5.7  检查更新(Check for modifications)

这个功能,可以看到你所做的哪些变更没有提示,包括文件或目录的增加、修改、删除等,点击检查版本库,还可以看到其他人改动的内容

 

3.5.8  更新(SVN Update)

更新本地文件与SVN服务器上最新的版本一致,在需要更新的文件夹上点击右键或者在文件下空白处点击右键,选择”SVN更新” (获取指定版本中的内容,点击右键执行SVN菜单中的“更新至版本“)。

注意:这里如果你新建的文件或文件夹没有加入到Server,更新后,文件或文件夹依然存在(这也是SVN人性化的地方,求同存异,不会因为更新版本而丢失已经创建的文件)

3.5.9  解决冲突文件

在更新以后,经常会有冲突文件的存在,这是因为,SVN支持不锁定更改,也就是你编辑文件的同时,别人也可以更改此文件。如果你们更新了同一文件的同一段代码。更新后,就会生成三个备份文件,并且标记冲突文件。

对于这种常有的问题,该如何解决,有两种解决方案:

1.放弃自己的更新,回滚到以前版本

2.双方协商,修改代码并提交

当然SVN也为我们提供了冲突代码比较功能

打开”与前一版本比较“,可以通过比较,来修改代码,达到一致后提交。

如果冲突代码处理不当,一方代码丢失,也不要怕,SVN仍然可以通过”更新至版本“回复丢失的内容。

3.5.10 显示日志(Show log)

右击SVN菜单中选择”显示日志“可以查看谁在什么时候做了哪些操作。

 

 

3.5.11 版本浏览器(Repo-browser)

右击SVN菜单中选择”版本浏览器“,输入URL地址,未登录的需要验证用户,在此可以看到其他人对该版本的操作情况,比如锁定等操作。

 1.建立分支

      了解了分支的作用,假设我们有一个项目有很多功能,团队配置20人,主要功能有:核心业务模块、TCP/IP通讯模块、射频卡/IC卡通讯模块等。为了合理安排人员,我们将人员分为三个小组,第一小组负责主干业务模块开发,当然这些模块需要两个通讯模块的支持,另外两个小组各负责一个分支开发,当分支相对完善的时候合并到主干模块。

      基于上面的开发模式,我们利用SVN的分支功能,下面具体介绍如何建立主干和两个分支。

      先把我们主项目签入到服务器上,具体操作上篇中已经介绍了,签入后,我们打开服务器端,看一下主项目结构,如下:

 

项目名称“TestObject”,下面有三个模块,主模块“Main”,还有两个模块“RfIc”、“TcpIp”

废话不多说,我们创建两个分支分别名为  TestObject_Branch_1  和  TestObject_Branch_2

具体操作如下,在客户端机器主项目 目录上右击,点击 TortoiseSVN ,点击 “分支/标记”

在打开的分支窗口中

输入分支名称,路径为根目录,在下面目标URL,可以看到 新建的分支的完整路径,如上图,点确定

提示复制完成,我们第一个分支创建完成了,分支开发组的同学,需要使用分支路径打开项目。

同样的方法,我们再创建第2个分支 TestObject_Branch_2,这时候项目文件夹中仍然只有主干部分,我们想看到其他分支,可以在项目文件夹中,右击,SVN更新

 可以看到 两个分支都更新到 本地了

 2.分支合并到主干

不同的项目组成员可以通过分支进行开发,版本相对稳定的时候,可以随时合并到主干,下面介绍一下如何合并到 主干

在此之前,我们先对两个分支及主干进行改动,分支开发,肯定会有很多地方产生差异。

我们先把主干项目的文件 \TestObject\Mian\index.txt进行如下改动

 

然后,再在主干下增加一个文件 second.txt

 

SVN提交,主干项目

然后,我们分别在两个分支上改动 \TestObject_Branch_1\Mian\index.txt  和  \TestObject_Branch_2\Mian\index.txt 文件 ,

 

并且在两个分支分别建立两个新文件 ,如下

分别提交以后。主干和两个分支,不仅主页文件不同,并且分支内的文件也不同

我们可以在服务端查看三个项目的结构,如下:

经过一段时间开发后,如果两个分支相对稳定,如何合并到主干呢?

注意:合并前,先更新三个项目到相到 稳定 待合并版本

如上图,在主干项目右击,TortoiseSVN,点 合并

按上图选择,点下一步

 

上面的URL是主干URL,下面是分支URL,我们有两个分支,重复一次合并,即可

两个分支合并完成后,我们再看一下主干目录下的变化

 

打开变更的文件 index.txt

我们看到,这里变更为最后一个合并的分支2的部分变更,刚才有合并分支2的时候,如果代码有冲突,会有一个提示,我选择的是 解决冲突,那么就替换掉了,如果选择不解决,可以保留主干上的更改。

具体要看冲突代码而定,即使我们手抖点错了,也可以通过上篇文章中提到的恢复功能,进行版本回退。

3.主干合并到分支

在项目推进过程中,如果分支代码需要主干部分的变更,我们可以通过主干合并到分支

我们先在主干上建立一个新文件fast.txt

提交主干,更改。

用同样的方式在分支上右击,打开 合并 窗口

注意:这次需要在要更新的分支上打开合并

合并窗口如下

和上次不同的是,主干 --》 分支,我们需要先选分支URL,下面选主干URL

完成后,我们看一下 分支1的目录

如上图,我们看到 ,分支1上合并过来了主干的文件 fast.txt.同时也将主干的差异文件也复制过来了

用同样的方法,可以将主干也更新到 分支2,不再赘述。

至此,SVN的分支并行开发就介绍完了,是不是非常方便?

下面我们介绍一下如何在Visual Studio 2013/2015 中使用 SVN,其他版本的 VS也适用

4. Visual Studio 2013/2015 中 SVN 安装

这里接上篇文章,如果直接跳到这里看的同学,可以看一下上篇,URL:http://www.cnblogs.com/yubinfeng/p/5177994.html

前提是我们已经安装了VS 2015/2013 

我们找到上篇中下载的SVN for VS插件安装包,如下

 

双击安装(VisualSvn暂时没有中文版本,不过我们通过上面的介绍,应该已经很熟悉了,它的使用和前篇中介绍的SVN客户端基本一样,只不过,使用环境不同,一个是资源管理器,一个在VS中而已)

 

下一步,同意,下一步

这步,可以看到 ,VisualSvn,会检测你系统中已经安装的VS版本,能选的全选中,下一步,完成安装

完成安装后,我们打开Visual Studio 2015(我以2015为例介绍,其他版本VS类似)

可以看到 ,Visual Studio 2015 中多了一个菜单VisualSVN,如上图,说明我们SVN for Vs插件已经安装成功

下面,我介绍一下如何在Visual Studio 2015中使用SVN 

5. Visual Studio 2013/2015 中使用 SVN 开发

 打开VS 2015 在工具-选项中,设置一下你所要使用的源代码管理器

打开选项窗口

找到源代码管理 -》 插件选择  ,在当前源代码管理插件中,选择 “VisualSVN”,确定

接下来,我们要做的就是 打开已有的SVN服务端的项目或将现有工程加入到SVN服务器

如上图,我们事先没有VS工程,这里我选择 “Add Solution to Subversion...”将当前工程签入到SVN服务器

这里选择一下 将要签入的工程路径,如果当前打开工程,则默认当前工程路径

下一步后,如上图,这里有两个选基, 一是新建一个版本库,另一个是使用已有的版本库。一般情况下,开发电脑和SVN服务器并不是同一台机器,我们选择已有的版本库,如果没有创建,可以先在SVN服务器上创建版本库后,再在这里选择。点下一步

这里输入,我们已经在SVN服务器上创建好的版本库URL,下一步

提示会将现在的工程导入到 SVN服务器指定的版本库,点 导入 ,完成本地工程签入

这时,我们可以看到 解决方案中的文件前面多了一个 小圆点 表示当前项目已经受到版本控制

我们去SVN服务器上看,DataBase版本库,并没有文件,不要急,我们在VS资源管理器中,右击工程,点 Update

 提示,工程文件已签入SVN服务器

此时,第一个版本1已经正式更新到 SVN服务器上了,我们去SVN服务器上看看

没有任何问题。

我们在VS中打开一个文件更改

可以看到 在资源管理器中,文件 前面的绿色 点变成了黄色,表示此文件被更改了。

关于状态图标,我们可以在VS的VisualSVN的选项中,打开,来更改图标样式,这点和Tortoisesvn差不多,只不过,状态只有三种

在VS用使用SVN和在WINDOWS中使用tortoisesvn客户端基本差不多,我们在VS文件管理器中,右击

可以看到 ,菜单中都是我们熟悉的。显示差异,更新,提示,日志,锁定,合并,分支,恢复版本等等,这些我们在前篇 和本篇 中都一一介绍过了,这里不再赘述了。。

至此,SVN的服务器配置,客户端使用,VS中的使用全部介绍完了。


目录 译者序 前言 序言 读者 怎样阅读本书 本书约定 排版习惯 图标 本书组织结构 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、付费专栏及课程。

余额充值