admin 管理员组

文章数量: 887021


2023年12月22日发(作者:网络编程实训报告)

Subversion部署和TortoiseSVN使用说明文档

备注:Subversion,简称SVN

Subversion是服务器端软件,用于搭建SVN服务;

TortoiseSVN是客户端软件,用于给使用者连接SVN服务使用;

第一章 Subversion部署

1.1

软件下载

1. subversion:

/project/win32svn/1.8.14/

2. TortoiseSVN

英文版32bit:

/sw-search-sp/soft/87/11993/

中文版32bit:

/s/17FR0U

中文版64bit:

/s/1i3934Wl

1.2

部署环境

1.2.1 安装部署环境windows2003或2008

公司部署建议部署在windows2003或者2008系统上,不要部署在XP或win7上(不稳定)

1.2.2 网络环境

SVN所部署的服务器IP地址使用固定IP地址,不要自动获取IP,否则不方便客户端访问;

第1页 共47页

1.3

安装Subversion

1.3.1 安装步骤

如下图,点击next,然后就等待安装完毕:

1.3.2 验证SVN是否安装成功

1. 在‘运行’中输入cmd然后回车确认,进入dos界面:

2. 切换到subversion的安装目录,命令 cd c:subversionbin

3. 然后输入命令:svn --version

显示如下图信息,则说明svn安装成功了;

第2页 共47页

1.3.1 Dos下全局使用svn的命令的操作方法

刚刚上面见的命令svnadmin 这个命令只能在svn的安装目录下的.bin目录下使用,为了能一打开dos就使用svn相关的命令,请安装如下操作:

就是在系统的环境变量path参数中添加svn的安装路径:C:Subversionbin

第3页 共47页

第4页 共47页

注意:在最右边添加“;C:Subversionbin”中间有;号的;

路径是根据你实际的安装路径来填写;

而后你就可以打开dos,直接输了svn有关的命令了,不用再进入的C:Subversionbin目录下了;

1.4

安装客户端TortoiseSVN

这举例说明安装中文版的TortoiseSVN操作步骤,

安装中文版的TortoiseSVN是在安装英文版的TortoiseSVN基础上安装一个中文补丁包,

而后在设置中修改TortoiseSVN显示语言为中文;

注意:

安装TortoiseSVN需要根据电脑操作系统的是32bit、还是64bit来选择安装对应版本的TortoiseSVN;

第5页 共47页

1.4.1 先安装TortoiseSVN客户端程序

TortoiseSVN-1.8.11.26392-x64-svn-1.8.13,如果是使用英文版客户端,安装完此软件即可;

第6页 共47页

然后就一直下一步,直到安装完成;

1.4.2 再安装中文补丁包程序

LanguagePack_1.8.11.26392-x64-zh_CN

第7页 共47页

安装完成!

第8页 共47页

1.4.3 设置TortoiseSVN为中文界面

1. 在没有设置TortoiseSVN语言为中文前,默认是English,如下图:

2. 修改TortoiseSVN的语言为中文:

第9页 共47页

修改后的效果如下:

第10页 共47页

1.5

创建版本库

版本库是用来存储和管理开发项目的一个载体,相当于数据库吧,或者叫代码库;

创建版本库有如下2种方式:

1.命令创建

2.用图形界面的TortoiseSVN工具创建版本库

注意事项:

1. 创建版本库得先建立一个文件夹,且是空的文件夹,不能有其他的文件或文件夹

2. 创建版本库的文件夹名称和目录结构,最好是非中文无特殊字符和空格符号的

3. 版本库所在的磁盘不要在C盘,面系统重装而丢失代码;

4. 版本库所在磁盘要留有一定的空间根据你们的项目的大小而定,至少要留个5G;

5. 一般来使用的话版本创建一个就够用了,这里我们不介绍创建同时使用多个版本库的操作方法;

1.5.1 命令创建版本库

1.新增文件夹,这里我以如下目录为说明:D:2svnser

2.命令格式: svnadmin create D:1svnser

主命令

举例

第11页 共47页

子命令 参数1

svnadmin create

仓库路径

svnadmin create D:1svnser

创建版本库成功后,会在 D:2svnser 目录下创建一些svn系统文件,如下图:

1.5.2 用图形界面的TortoiseSVN工具创建版本库

1. 新增文件夹,这里我以D:2svndata 目录为列;

2. 右击data目录,如下图:

第12页 共47页

版本库就创建好了;

3. 进入data目录我们可以看到如下几个文件夹:

第13页 共47页

1.6

启动SVN

启动SVN有2种方法:

1. 命令启动;

2. 创建系统服务启动svn

1.6.1 命令启动SVN

1. 命令Svnserve -d -r D:2svndata,而后确定键,保持打开这个dos窗口不要关闭,关闭了svn服务就关闭了

主命令

svnserve

举例

参数1 参数2 参数3(版本库的路径)

D:2svndata

-d表示后台执行 -r表示版本库根目录

Svnserve -d –r D:2svndata

1.6.2 创建系统服务启动SVN

给svn创建系统服务,如下创建了一个服务名为SVNser的服务,创建成功后到‘计算机管理’的‘服务和应用程序’下‘服务’启动服务SVNser

第14页 共47页

Sc create SVNser binpath=” C:Subversionbin –service –r D:1svnser” start= auto

depend= Tcpip

主命令 子命令

sc create

参数1

服务名

参数2

binpath= “运行服务所需要的二进制文件路径以及运行该二进制文件的命令行参数”

参数3

start= auto

表示自动启动

参数4

depend= Tcpip

表示依赖Tcpip协议

[注意:在这个命令中,等号左边都没有空格,右边都有一个空格!]

1.7

添加账号和安全设置

思路:

1. 开启用户验证设置,关闭匿名访问(设置文件)

2. 添加用户账户密码(设置文件passwd)

3. 设置用户对目录的访问权限(设置文件authz,随着项目的增加,要及时更新用户对新增项目的目录访问权限)

注意:这些设置都是在创建版本库下面的conf目录下的文件进行设置的;

1.7.1 未经设置的svn无法通过网络访问svn服务

启动svn后,使用TortoiseSVN访问svn服务端,如下图:

发现无法访问svn服务,因为svn系统设置默认不允许无用户信息的账号访问;

第15页 共47页

第16页 共47页

1.7.2 开启系统账号访问设置

1. 修改设置开启用户访问需要通过用户密码验证

创建版本库时生成的conf文件夹下:

全局设置文件,设置开启那些功能

passwd 账号和密码设置文件

authz 账号对应目录权限配置文件

第17页 共47页

2. 修改

修改如下内容,把前面的#符号删除,左边不要留空格:

# password-db = passwd 启用用户账户配置文件

# authz-db = authz 启用权限配置文件

# realm = My First Repository

指定版本库的认证域,即在登录时提示的认证域名称

第18页 共47页

1.7.3 新增账号passwd

打开passwd文件,如下图:

xiao = 1

yui = 1

read = 1

账号名称 = 密码,用户名后面和密码前面到=号都有空格的,而且用户名要顶格写到最左边;

上面三个账号都是我添加的,如果不需要某个账号时,不要删除,直接在前面添加一个#号注释掉即可,重启svn,该账号就无法访问svn了;

注意添加账号的格式是: xiao = 1, 不是xiao=1

1.7.4 赋予账号访问目录的权限authz

如下图,是一个设置好的配置文件(前面有#号的都是注释掉了的,不用理他):

第19页 共47页

[groups]

——定义组和组成员

g_a_rw = xiao,yui

——组g_a_rw由成员xiao和yui组成,注意=号前后有空格;

g_b_r = read,test

——组g_b_r 由read和test组成

[/]

——指定要设置的目录为根目录/

@g_a_rw = rw

——赋予组g_a_rw对/目录有读写的权限,如果是组的话赋予权限时要在前面加@;

@g_b_r = r

——赋予组g_b_r对/目录只有读的权限

* = r

——其他所有用户对/目录都有读的权限

[/BJOA]

——指定目录为根目录/BJOA

test = rw

——test用户对/BJOA目录有读写的权限

yui = r

——yui用户对/BJOA目录只有读的权限

* =

——其他用户无权限访问/BJOA,这个权限可以拒绝父目录有的权限

注意事项:

1. r代表读权限,w代表写权限;

2. = 号的前后都有空格,设置时要靠最左边填写,最左边不能留空格;

3. 可以创建组,把权限相同的账号定义到同一组下面,方便管理;

4. 组在赋予对应目录权限时,要在前面加@才可以,否则不生效;

5. 一般来讲/ 目录的rw权限只给管理员,不能随便给用户;

6. * 代表所有用户,‘* = ’拒绝其他所有用户访问,‘* = r’其他用户只有读的权限;

7. ‘* = ’,一般来讲某个项目或目录只允许某些用户访问时,要注意在该目录权限设置时设置了其他用户的访问权限后记得在最后加上这个,禁止其他用户访问;

8. 一般来讲,赋予权限应该按照如下要求进行权限设置:

a. 权限尽量从某个项目的目录来设置,而不要冲/目录赋予用户权限,根目录一般只给svn管理员设置权限;

b. 赋予权限时先设置好明显那些用户有读有写的权限,最后再加上一个拒绝其他(*

= ),当然如果该目录是对所有人开放的,可以不用设置;

第20页 共47页

第二章 如何使用TortoiseSVN工具

2.1

常见操作

2.1.1 使用TortoiseSVN访问svn服务

2.1.1.1

打开TortoiseSVN

在桌面开始菜单中找到‘TortoiseSVN / TortoiseSVN Repository Browser’

2.1.1.2

使用svn://IP格式访问svn服务

在地址栏中按照如下格式输入: svn://IP,即可访问;

第21页 共47页

2.1.1.3

清除TortoiseSVN保存的用户登入信息

在使用中,如果我们有勾选上图中的‘保存认证’,下次登录svn时就默认使用之前的账号登入svn,有时候我们需要切换到其他的svn账号登入svn服务器,该怎么办呢?

那就得清除TortoiseSVN保存的认证信息,在TortoiseSVN中的‘Settings’程序中清除:

第22页 共47页

点击‘清除全部’,就可以把之前保存的认证信息清除了,再登入svn时就会弹出要你输入账号和密码了;

2.1.2 创建文件夹、删除文件夹 delete

注意:这里新增的文件夹是在svn的版本库中创建的,在windows系统中是看不到的;

要执行创建和删除文件的操作得有w也就是写的权限,才可以;

第一次登入全新安装的svn,可以看到如下3个文件夹:

如果不需要,可以把这3文件删除了!

trunk是主分支,是日常开发进行的地方

branches是分支。一些阶段性的release版,这些版本是可以继续进行开发和维护的,则放在branches目录中。又比如为不同用户客制化的版本,也可以放在分支中进行开发

第23页 共47页

tags目录一般是只读的,这里存储阶段性的发布版本,只是作为一个里程碑的版本进行存档。

注意:svn并没有明确的规范,更多的还是用户自己的习惯

1. 创建文件夹

输入文件夹名称,然后确定即可!

2. 删除文件夹

注意不要随便删除文件夹,这里是开发环境不是你个人电脑啊!

第24页 共47页

2.1.3 加入文件+加入文件夹 add

把文件和文件夹或者新增的项目代码上传到SVN,svn里面的代码最开始就是通过加入文件夹和文件的方式上传到svn上慢慢积累下来的;

权限要求为w也就是写的权限;

下面以上传目录为列,上传文件同上传目录操作方法雷同;

1. 打开文件夹要保存到的目标目录,我上传到目录:“svn://127.0.0.1/杭州滨江政协OA系统/”下

2. 选择要上传的文件夹和项目

第25页 共47页

3. 在弹出的选项框中说明一下这个文件夹的内容或大致信息,然后确定上传;

如果目录文件夹比较大的话需要一定的时间,请耐心等待;

2.1.4 导入 Import

导入是把本地的文件上传到svn服务器上,该目录不是工作副本所在的目录(可以是工作副本下新增的子目录),且还未上传到svn服务上的;

在本地电脑选择要提交到svn服务器的目录,右键选择TortoiseSVN----Import,系统弹出导入提示框;

第26页 共47页

2.1.5 取出Checkout

Checkout检出成功,后本地的下载下来的文件,通常称为工作副本;

第27页 共47页

这个是开发人员常常用到的,就是把svn上面的文件或者代码下载到本地(也叫工作副本)来,在checkout的过程会在本地的目标文件夹下创建一个隐藏的.svn文件夹,千万不能删除这个文件夹,这里是记入本地文件版本信息等等之类的;

修改过这里的文件或者代码后,可以直接通过commit更新到svn上面去;

如下图:

Checkout的方法有2种:

a. 在本地电脑新增一个文件夹,让后右击该文件可以看到有‘checkout’;

b. 另一种是通过TortoiseSVN登入到svn后选择要checkout的目录右击,可以看到一个checkout

1. 在本地电脑新增一个文件夹,让后右击该文件可以看到有‘checkout’

第28页 共47页

等待下载完成;

下载完后,可以看到下载下来的文件有一个绿色的勾√,标示,每个文件都有,这个是标示文件的状态,目前文件正常没有变动;

第29页 共47页

2. 通过TortoiseSVN登入到svn后选择要checkout的目录右击,可以看到一个checkout

第30页 共47页

选择一个本地空的而且之前没有checkout过的文件夹;

3. Checkout后再本地目标文件夹下会生成.svn的隐藏文件夹;

第31页 共47页

2.1.6 导出export

导出只是把文件下载到本地,导出后不会再本地目标文件下生成.svn文件夹,导出只是把文件下载下来没有其他任何标记,如果对导出来的文档进行修改、编辑等操作,不能进行commit操作;

2.1.7 文件图标标示状态说明

只有通过检出checkout下载下来的文件和文件夹(也可以是检出后update更新过的),才有在文件和文件夹上有特别的标示标志着,下面看看各种标示代表的什么意思吧!

可以通过开始菜单下的TortoiseSVN Settings 图标集 来查看:

一共有9种状态:

常规、修改、冲突、只读、已删除、锁定、增加、忽略、无版本控制

第32页 共47页

2.1.8 提交Commit

修改完代码后或者添加新代码、文件,又或者删除了一些不用的代码,在本地测试通过后需要更新到svn里面去;

检出checkout到本地的文件或目录修改后,可以看到文件的图标都改变了;

1. 进行提交commit操作:

第33页 共47页

2. Commit成功后的svn服务端和本地的变化

Svn服务器端的变动过的文件版本号会更新,当然文件也会跟着一起变动,作者会显示最后一次修改该文档的svn账号;

第34页 共47页

本地的图标由恢复成绿色的勾了;

2.1.9 更新Update

更新update操作是针对工作副本来进行的;

该操作是从svn服务器上更新最新版本的代码或文件到本地,软件开发中有很多人在使用,不确定什么时候有人更新过代码或文件,开发要保持在最新的代码上进行开发;

所以每天早上到公司时,先把代码更新一下;

1.选择工作副本目录右击,‘更新update’

第35页 共47页

2.1.10 复制至工作副本 + 复制到 copy

1. 复制至工作副本:下载到本地电脑的某个工作副本下面

2. 复制到:在svn服务器上创建一个副本

2.1.11 锁定功能 get lock

锁定某个目录或者某个文件,项目开发时对于某些关键的某几个代码或者是开发任务比较重要紧急时,为了避免产生冲突,可以锁定某个目录或某个文件,这时别人就不能修改这个目录或文件了;

在工作副本中找到要锁定的目录或文件:

第36页 共47页

这样就锁定成功了;

2.1.12 解锁 Release lock

在修改好代码上传到svn后,机顶盒解锁;

解锁有2种方式:

A. 锁定人解锁;

B. 其他人员强制解锁;

1. 锁定人解锁;

2. 其他人员强制解锁

第37页 共47页

登入svn,选择被锁定的代码右击,破除锁定;

2.1.13 查看日志 show log

可以查看某个代码、文件或者文件夹的变更历史记入信息;

操作方法如下,使用TortoiseSVN连接svn服务器后,右击文件、代码或者文件夹,如下图:

第38页 共47页

可以看到如下图,修改的对应的版本号,修改作者和备注信息,及修改的内容有那些,都一目了然;

2.1.14 追溯 Blame

查看文件的各个版本的变动信息,只能对文件不能对文件夹查看;

使用TortoiseSVN 登录上svn服务器后,右击文件:

可以指定从那个版本开始查看到那个结束版本结束来查看文件的各个版本的变动信息;

第39页 共47页

第40页 共47页

2.1.15 还原 Revert

如果不小心把下载到本地工作副本的代码或文件夹删除了,可以使用还原功能还原文件;

在被删除文件的当前目录下或者上级目录中进行操作,如下图:

还原也可以用于在编辑代码时自己忘记编辑了那些内容,可以把

第41页 共47页

2.1.16 比较差异 Diff

在修改好代码后可以使用‘比较差异’来查看修改内容和原文进行比较;

第42页 共47页

2.1.17 解决冲突 Resolving Conflicts

有时在进行更新update时文件会有冲突。

冲突产生于两人都修改同一文件。解决冲突只能靠人而不是机器。

有冲突时不要随便去删除存在冲突的文件,这样会然操作变麻烦;

当产生冲突时,你应该打开冲突的文件,查找以<<<<<<<开始的行。冲突部分被标记:

<<<<<<< filename

your changes

=======

code merged from repository

>>>>>>> revision

Subversion为每个冲突文件产生三个附加文件: 更新前的本地文件。 V 你作改动的基础版本。 V

更新时从档案库得到的最新版本。

使用快捷菜单的编辑冲突Edit Conflict命令来解决冲突。然后从快捷菜单中执行已解决Resolved命令,将改动送交到档案库。请注意,解决命令并不解决冲突,而仅仅是删除.r*文件并允许你送交。

冲突时的提示信息:

第43页 共47页

当发生冲突时,可以根据svn中的日志信息,查看是谁修改的代码同自己的修改有冲突,和他协商该如何修改,协商ok后,在你的工作副本也就是有冲突的代码上根据你们协商的结果修改代码,并进行‘解决’操作;

第44页 共47页

进行‘解决’操作后,因为冲突产生的3个文件也消失了,就可以进行commit操作了;

第45页 共47页

2.1.18 使用TortoiseSVN进行开发的推荐操作流程

1. 合作开发团队成员安装的SVN的版本应该一致,同一个版本的服务器和客户端可以大大的减少不必要的冲突和麻烦。

2. 工作副本尽量是一个只存放开发代码的文件夹,不要有其他不相干的文件;

3. 开发在使用TortoiseSVN进行开发时的正确使用流程

3. 正确的认识图标说明。实时清楚文件的当前状态是什么。

第46页 共47页

4. 及时更新修改记录。虽然SVN用于项目管理,但是功能也并不是无所不及,每次在commit上传更新时,在备注中说明本次更新的内容是什么大致描述一下;

5.

如果条件允许,提交之前可以更新一下,然后在最新的副本中运行一下程序,确保自己提交的部分能够正常运行,使的SVN服务器上的为最接近正确的代码。

6.

对于项目中不必要的文件,可以在提交时默认不选

操作方法:设置(setting)中选择常规,如图所示:

第47页 共47页


本文标签: 文件 目录 版本 文件夹 设置