day42

    xiaoxiao2021-04-15  41

    svn文档

    1 svn:版本控制软件

    在现实的软件开发中有可能遇到的问题:

    代码管理混乱 备份多个版本,占用磁盘空间大 解决代码冲突困难 容易引发BUG 难于追溯问题代码的修改人和修改时间 难于恢复至以前正确版 无法进行权限控制 项目版本发布困难

    2 Svn的安装

    参照SVN 安装界面.doc文件

    3 创建仓库

    3.1仓库的位置 F:\work\course\svn\repository\svn

    3.2利用svnadmin –create命令创建仓库

    上面的命令指的是在指定的目录下创建一个仓库。

    3.3库里的文件

    4 svn仓库的启动

    4.1两种启动-1-命令行

    4.1.1启动命令

    Svnserve –d –r 文件路径

    4.1.2检查是否启动

    上面的这个命令可以检查端口号,一般svn默认的端口号是3690.

    说明该端口号正在被监听

    4.1.3说明 当把命令窗口关闭以后,监听就没有了,所以这种启动方式必须把命令窗口打开。

    4.2两种启动-2-windows服务

    4.2.1执行启动命令 sc create SVN-Service binpath= "F:\work\course\svn\bin\svnserve.exe --service -r F:\work\course\svn\repository\svn " displayname= "SVN-Service" start= auto depend= Tcpip binpath为执行命令所在的路径 -r 为仓库的路径:这里配置的多仓库 也就是说可以在svn下建立很多仓库,例如建立itcast仓库 访问的时候:svn://localhost/itcast。建立oa,则访问的时候 svn://localhost/oa 如果路径改为F:\work\course\svn\repository\svn\itcast,只能访问itcast这一个仓库。

    4.2.2 Window服务

    当成功执行上述的命名以后,就可以在window的服务下面看到类似的内容。

    4.2.3删除服务 sc delete SVN-Service

    5 svn命令

    - 5.1svn checkout命令

    说明:把仓库中的某一个项目checkout出来 svn checkout svn://localhost/itcast F:\develop\workroom\user.1.1建立用户

    创建一个客户端操作文件夹

    F:\work\course\svn\develop

    在该文件夹下建立两个文件夹,代表两个用户user1和user2

    5.1.2利用命令

    利用命令把itcast仓库checkout到user1目录

    创建完毕以后user1下会多一个文件夹

    这说明创建完毕了。

    - 5.2 svn add命令

    在客户端创建一个文件,把该文件加入到该仓库中,加入到版本控制中

    5.2.1执行命令

    在客户端user1中新建一个txt文件:a.txt

    说明:把a.txt加入到了itcast仓库,加入到了版本控制中

    - 5.3svn commit

    说明:当把一个文件加入到指定仓库以后,接下来的操作就是提交。在提交的时候必须写一些说明(可以写这次提交都做了一些什么内容)

    5.3.1 执行命令

    说明:当执行这个命令的时候失败了。因为用的是匿名用户登录的。

    在F:\work\course\svn\repository\svn\itcast\conf路径下有一个文件:svnserve.conf 该文件有一句这样的 # anon-access = read匿名用户只能有读的权限,所以这里应该改一下:anon-access = write以后再次执行次命令的时候:

    说明命令执行成功了。在itcast仓库中加了一个文件a.txt,版本号为1 - 5.3.2user2用户执行checkout命令

    把a.txt文件checkout到user2中,并且版本为1

    5.3.3User2用户修改a.txt文件5.3.4User2用户commit文件

    文件a.txt在user2下再次进行修改 - 5.3.5User1用户进行更新

    把user1下的a.txt文件更新到版本2

    5.3.6当删除掉客户端的一个文件时 当删除掉客户端的一个文件时,可以使用svn update命令把服务器上的版本download下来。

    6 Tortoisesvn的使用

    - 6.1建立仓库

    1、在F:\work\course\svn\repository\svn路径下建立一个文件夹为itcast 2、进入itcast目录,如图所示

    3、执行完第二步后,在itcast目录中产生了

    这个目录和用命令行创建的工程的目录是一样的。

    - 6.2建立用户

    在F:\work\course\svn\develop目录下创建两个用户user1和user2,即两个文件夹。

    - 6.3点击user1用户,选中checkout

    把itcast仓库放入到user1中 执行完上述操作以后itcast仓库就被下载到了user1中

    - 6.4在user1的itcast仓库中创建一个a.txt文件

    - 6.5利用svn add把a.txt添加到版本控制

    添加完毕以后会出现如下的图标:

    - 6.6利用svn commit上传到服务器

    在执行commit之前还要修改权限的部分。

    - 6.7在user2中创建itcast仓库

    这个时候,user2的icast仓库中已经存在a.txt文件了

    - 6.8修改a.txt文件

    - 6.9执行commit操作

    6.9.1在user1用户下针对itcast库的a.txt执行update操作

    - 6.10上锁

    可以针对user1用户中的a.txt文件进行上锁的操作。

    当输入用户名和密码的时候,就上锁了,上锁的突变如下所示:

    当用户user2试图再次修改此文件时,会报如下的错误:

    6.11解锁

    6.12 needs-lock

    6.12.1a.txt变成needs-lock

    a.txt作如下的操作:

    添加一个属性:svn:need-lock,值为true,确定以后变成如下的图标:

    这个图标表明再次修改必须上锁。

    6.12.2a.txt上锁

    6.12.3进行修改

    6.12.4进行commit操作

    6.13去掉needs-lock属性

    点击remove就可以了

    - 6.14冲突问题

    6.14.1user1更新a.txt文件 6.14.2user2更新a.txt文件 6.14.3user1更改a.txt文件 6.14.4user2更改a.txt文件 6.14.5user1对a.txt进行commit操作 6.14.6user2对a.txt进行commit操作

    当user2对a.txt进行操作的时候,user2操作的a.txt文件并不是最新的。所以报如下的错误。

    6.14.7对a.txt执行update操作

    该图标表示文件有冲突了。 a.txt.mine表示user2用户最新的 a.txt.r11 表示提交之前的 a.txt.t12表示服务器上最新的

    6.14.8解决冲突

    Theirs表示服务器上的 Mine 表示自己的 Merged 表示合并以后的版本

    可以在冲突的那一行点击右键,选择这四个选项中的其中一个。这个时候,Merge就会发生变化。

    这样就可以解决冲突的问题。

    6.14.9Resolved 当解决完毕以后,告诉svn已经解决完了

    6.14.10commit

    7 权限

    - 7.1权限的配置

    在itcast库的config目录下有授权的相关内容。

    7.1.1svnserve.config 定义所有认证和授权政策。 7.1.1.1anon-access 匿名用户的访问权限,应该是什么访问权限都没有 anon-access = none

    7.1.1.2auth-access 认证用户授权 auth-access=write

    7.1.1.3password-db 指定用户的认证文件为passwd文件 password-db=passwd

    7.1.1.4authz-db authz-db=authz 指定用户的授权文件为authz。

    7.1.2password 存放项目成员账户信息 [users] harry = harryssecret sally = sallyssecret边代表用户名,等号右边代表密码,所以可以这么user1=user1pwd user2=user2pwd统中有两个用户user1,user2,密码分别是user1pwd,user2pwd。

    7.1.3authz 复杂的群主授权控制

    [groups] harry_and_sally = harry,sally harry_sally_and_joe = harry,sally,&joe groups是组的意思 等号左边的是组名,等号右边的是组的成员 所以可以写 svn_group = user1 把user1加入到svn_group组中 # [repository:/baz/fuz] #@harry_and_sally = rw # * = r # [repository:/baz/fuz]:指出针对哪个仓库 # @harry_and_sally = rw:针对某一个仓库,对组进行授权 # * = r:对除了这个组以外的其他用户进行授权 [itca st:/]:针对itcast仓库 @svn_group = rw 针对svn_group组进行授权 user2 = rw 针对user2用户进行授权 * = 除了以上用户以外的其他用户都不能授权 [itcast:/doc] user1 = rw * = *

    以上配置说明:针对itcast仓库的doc目录,只有user1有读写权利,其他的用户都没有。

    - 7.2权限的使用

    当配置完成权限以后,当在user1用户下或者user2用户下修改了一个文件,进行commit的时候,系统会自动提示如下:

    这个时候只有输入正确的用户名和密码信息才能提交。

    8 svn嵌入myeclipse

    - 8.1插件的下载

    从官网上下载插件http://subclipse.tigris.org,可以从这个网站下载到最新的svn插件。

    - 8.2创建插件目录

    在F:\work\course\svn下创建插件目录myplugins\svn\eclipse,把下载完的解压后的两个文件夹放入到该目录下

    - 8.3创建svn.link文件

    在myeclipse安装的dropins目录下创建svn.link文件 Link文件中的path

    path的值就是svn插件的目录所在。

    - 8.4重启myeclipse

    9 svn在myeclipse中的使用

    - 9.1把库添加到myeclipse中

    打开如下的视图:

    准备新建一个资源库的位置

    输入库的url:

    itcast库就被导入进来了

    - 9.2把svn的项目检出到myeclipse

    在新建项目的时候,选择从svn上检出项目 ! 这里写图片描述

    选择现有资源库的位置

    检出的项目在myeclipse中

    - 9.3对a.txt进行编辑

    - 9.4对a.txt进行commit操作

    - 9.5Compare with

    可以利用Compare with的功能的子功能 基本修订版 最新版本的上一个版本

    利用这个功能可以和以往的版本做对比。

    - 9.6Replease With

    可以选择某一个版本的内容覆盖当前版本的内容

    - 9.7把项目添加到svn中

    新建一个项目,做如下的操作:

    选择svn

    把项目保存在itcast资源库

    - 9.8分支、合并、切换

    9.8.1Trunk 存放开发的主线,团队成员在开发的时候一直要用这个库中的内容

    9.8.2Branches 存放支线副本:当项目稳定以后,先发布到tags下,如果发现了bug,再从tags下检出到branches下。在该版本下进行bug的修复,把修复完毕的稳定的版本重新发布到tags下。

    9.8.3Tags 存放标签副本,也就是存放稳定版本

    9.8.4问题: 一个公司开发了一个oa系统,随后发布了一个版本v1.0,由于这个版本还是比较成功的,然后客户提出了更多的需求,随后开发团地准备开发下一个版本v2.0,当开发团队 在如火如荼的工作的时候,客户突然提出了在v1.0版本有一个bug,需要改进,而且必须把这个改进引入到v2.0版本中。用svn怎么样解决这个问题呢?

    9.8.5解决

    9.8.5.1在svn库中建立一个项目oa

    9.8.5.2让oa成为svn项目

    9.8.5.3修改权限,让匿名用户具有写的权限

    9.8.5.4在客户端准备一个oa文件夹

    9.8.5.5在oa文件夹下建立三个文件夹

    9.8.5.6把oa里面的内容导入到svn库中

    9.8.5.7查看仓库的结构

    从上面可以看出,branches,tags,trunk已经被加入到仓库中了。

    9.8.5.8把正在开发的一个项目导入到trunk(主线)中。

    这样该项目的基本代码就加入到了trunk中。

    9.8.5.9把trunk的项目check out到myeclipse中。

    经过以上几步,trunk中的目录就被导入到了oa中。

    9.8.5.10发布v1.0版本

    选择发布到tags目录

    在tags下建立一个文件夹V1.0

    9.8.5.11开发V2.0的功能 在A.java类上稍微做一下修改即可。

    9.8.5.12现在V1.0有bug,对V1.0的版本做检出

    9.8.5.13对V1.0的版本进行修改 9.8.5.14对修改后的内容提交 9.8.5.15以上操作不对,因为tags的内容不能进行修改 9.8.5.16

    9.8.5.17对tags中的V1.0做分支

    对tags中的V1.0做分支,然后移动到branches中,为V1.0_fixup。

    9.8.5.18切换版本库的路径

    把路径切换到branches/V1.0_fixup。

    9.8.5.19提交 因为版本库已经切换到了branches/V1.0_fixup,所以这个时候可以提交了。

    9.8.5.20把修复好的V1.0_fixup发布

    选择branches中的版本做分支标记。

    发布到稳定库中(tags),并且版本的名字为V1.1

    9.8.5.21把V1.1版本加入到原来的版本中

    在trunk版本中,选择合并。

    从tags/V1.1中进行merge

    9.8.5.22在企业的应用 1、项目经理会发一个word文档 1、svn的仓库的地址 2、使用svn的用户名和密码 3、把svn上的项目导入到myelicpse中 4、做自己的模块,把自己写的东西上传到svn上 5、版本的对比,合并版本

    转载请注明原文地址: https://ju.6miu.com/read-671861.html

    最新回复(0)