文档章节

SVN操作手册

谢思华
 谢思华
发布于 2014/03/06 09:38
字数 3596
阅读 57
收藏 0

一.SVN客户端安装

1.客户端下载

下载地址:

ftp://192.168.74.6/Package/svn/tortoiseSVN/TortoiseSVN-1.7.7.22907-win32-svn-1.7.5.msi

2.客户端安装

按照以下的顺序操作便可安装成功:

下面可以更改安装路径:

二.SVN客户端使用

1.SVN修改账号密码

新开权限的人员账号都是姓名全拼,密码都是!@#$%^

http://svn.demo.pc.com.cn/usvn/login/

使用原账号密码登陆后,点击Profile,可以对密码进行修改,提交后便可使用新密码重新登录

如果需要清除账号密码缓存,重新输入的话,操作如下:

右键选择Settings

弹出框现在saved Data,在Authentication data 处,点击clear,确定。

清除之后再次对svn版本库进行操作时,会提示需要输入账号/密码。

2.svn图标说明

不同的重载图标对应文件不同的SVN状态的

  一个新检出的工作副本使用绿色的对勾做重载。表示 Subversion 状态正常.

在你开始编辑一个文件后,状态就变成了已修改,而图标重载变成了红色感叹号。通过这种方式,你可以很容易地看出哪些文件从你上次更新工作副本后被修改过,需要被提交。
 如果在更新的过程中出现了冲突,图标会变成黄色感叹号。
加号告诉你有一个文件或目录已经被调度加入版本控制,重命名时会有此提示。

  这个图标说明文件和目录未被版本控制

  这个图标表示当前文件夹下的某些文件或文件夹已经被调度从版本控制中删除,或是该文件夹下某个受版本控制的文件丢失了。

3.建立工作区

项目开始之前,在本地硬盘上,创建一个文件夹,文件夹命名随意(例如E:\pcbaby

4.下载版本库

进入工作区E:\pcbaby,点击SVN Checkout

弹出框如下图所示,

URL of  repository:输入http://svn.demo.pc.com.cn/svn/pcbaby_system/

Checkout directort:默认E:\pcbaby(可修改)

点击OK

弹出登录框,输入用户名/密码,勾选save authentication(保存账号密码),点击OK

弹出框显示下载情况

下载完毕后便可查看亲子网专项团队目录下的所有子文件。

5.更新版本库

   下载最新的目录内容,在工作区E:\pcbaby空白处右键选择SVN Update便可将最新的内容重新下载下来。

6.修改文件内容

如果对库中某一个文件进行了修改,系统会自动为这个文件和这个文件所在的各级父文件夹加上红色叹号,代表该文件或目录已经在本地被修改,如下图所示:

修改操作完毕后,可右键单击工作区文件夹,选择commit提交新版本,即完成一次更新操作。

如果文件夹A包含这两个文件test1.txt,test2.txt,文件夹B包含test1.txt,test3.txt;要使用B替换更新A,可以先删除A,再增加B提交更新。

注意:

新版本提交之后,其他拥有写权限的用户也许会重复以上几步的操作,完成对版本库的再一次更新。所以,每次在工作区文件夹下修改本地版本库之前,必须首先对本地版本库执行一次更新(右键单击工作区,选择SVN Update),将最新的版本下载到本地,然后再进行修改操作。

7.添加文件/文件夹

先把文件或者文件夹复制粘贴到对应的目录,如下图所示:

选中新增的文件或文件夹,右键选择Add

Add之后,文件或文件夹变成如下状态:

再次选中新增的文件或文件夹,右键选择SVN commit提交

输入提交信息,点击OK:

显示提交成功:

提交成功后,文件状态如下:

8.查看日志(show log)     

查看日志可以检阅到文件的历史更改记录。

如果想查看一个文件的日志,例如22.txt,右键这个文件,选择show log,系统会弹出一个窗口,并在窗口中显示22.txt各个版本的log

查看结果如下图所示:log显示了每个版本的提交者/提交日期/版本号/提交信息。

9.重名名和删除文件(RenameDelete)

如果要删除一个文件或重名名一个文件,注意不要在windows下直接操作。只需右键单击该文件,选择RenameDeletesvn系统便会完成操作。

    在workspace中将文件重命名或删除后,服务端的文件结构不会变化,只有当提交新版本库后,即commit后,服务端的文件结构才会被更新。

    如果误删除了文件,在没有提交版本库之前,可以通过对版本库的升级将文件重新下载到本地的版本库,也可以通过revert恢复。

如果文件删除,并且已经提交,那么要找回文件只能通过下载旧版本库来完成。

10.下载某个文件的旧版本(Updata to revision)

如果想要得到某个文件的旧版本,只需在该文件上单击右键,选择Updata to revision…即可。系统会提示输入版本号,输入后点击OK便可。

查看完旧版本文件后,如果想在此回到最新版本,只需要对文件运行Update即可。

11.撤销修改(Revert

  当对一个文件进行了修改并保存后(注意此处并没有进行提交),如果对修改不满意,想要重新修改,可以右键单击修改过的文件(带红色叹号的那个),然后选择revert,前面的一系列修改便会被撤销,恢复到Update之后的状态。如果一个文件被误删除,也可通过右键单击该文件所在的目录,选择revert来恢复。

三.使用日常错误

1.文件过大引起的错误Svn做了最大文件上传的限制,目前允许上传的最大文件为20M

2.文件冲突

   当两个用户同时下载了最新的版本库,并对库中同一个文件22.txt进行修改提交时,首先提交的用户devA不会发生异常,第二个提交的用户devB便会出现无法提交的现象。因为服务端的版本库已经被devA更新,devB用户在上传时,系统会提示出错:

在这种情况下,devB用户需要首先对修改的文件进行Update文件操作。系统会将本地的22.txt与从服务端下载22.txt合并到一个文件上,并在该文件图标上标上黄色叹号,表示文件出冲突。devB用户只有与devA协商,将该冲突处理,之后单击右键,选择Resolved,冲突标记消除,才能够再次提交,否则无法提交。

最好的方法就是:备份当前冲突的文件,将此文件所在目录内容全部删除,重新update,再更新。

 

四.创建分支与合并实践

   一般主干代码与线上正在运行的代码一致,如果需要添加一个小功能,且不影响线上代码实时维护,此时最优方法为创建分支,把小功能的代码维护放到分支,等到小功能测试完成后,再合并到主干上。一并更新代码到线上。

1)本地Repository的创建

  repository的创建很简单,假设我要在D:\TortoiseSVN\TestRepository目录中创建repository,只需 右键TestRepository目录,依次选择"TortoiseSVN" -> "Create repository here"便完成了repository的创建。

 

2)Check out

   假设要check out到D:\TortoiseSVN\TestSVN,同样很简单,在D:\TortoiseSVN目录下创建TestSVN目录,然后在该目录上右 键,选择"SVN Check out...",在弹出的窗口中的"URL of repository"中填入"file:///D:/TortoiseSVN/TestRepository",其他默认即可,最后点击ok。

3)trunk创建新项目MyProject

  相当简单就不赘述了,只列出本次操作所作出的修改:

4)创建branch

   在/trunk/MyProject目录上右键,依次选择"TortoiseSVN" -> "Branch/tag...",在弹出窗口的"To URL"中填入分支的地址,在这里目标revision选择HEAD revision,如下图所示,添加log后点击ok分支便建立了。这个操作速度非常快,新建的branch在repository中其实只是一个指向 trunk某个revision的软连接而已,并没有真的复制文件。

【温馨提示:在branch新建一个分支文件夹:MyPoject,先不提交到SVN,但是To URL可以选定到当前路径,等到点击OK后,则相当于创建了该分支,此时右键branch下的MyProject,然后checkout,则创建分支成功】

5)Check out分支

   右键TestSVN目录选择"TortoiseSVN Update"即可将刚刚建立的分支下载回本地。进/branches/MyProject目录下你会发现其文件结构和/trunk/MyProject一模一样。

6)branch提交一个新文件

 

7)trunk紧接着提交一个修改

8)branch再次提交一个修改

9)将trunk中的修改同步到branch

   6-8演示的是branch和trunk在独立、并行地开发。为了防止在“错误”的道路上越走越远,现在branch意识到是时候和trunk来一次同步了(将trunk合并到branch)。

   首先,在本地trunk中先update一下,有冲突的解决冲突,保证trunk和repository已经完全同步,然后在/branches /MyProject上右键,依次选择"TortoiseSVN" -> “Merge...”,在弹出的窗口中选择第一项"Merge a range of revision",这个类型的Merge已经介绍得很清楚,适用于将某个分支或主线上提交的多个revision间的变化合并到另外一个分支上

【温馨提示:下图中圈住的第一项,为从一个地方合并到另外一个地方,一个地方改动了,另外一个地方没改动的情况下进行的合并】

  点击next后,出现如下窗口:

       由于是要从trunk合并到branch,理所当然这里的"URL to merge from"应该填trunk的路径,"Revision range to merge"很好理解,就是你要将trunk的哪些revision所对应的变化合并到branch中,可以是某一连串的revision,比如 4-7,15-HEAD,也可以是某个单独的revision号。由于在r4中,trunk修改了Person.java中的talk()方法,所以这里 的revision只需填4即可。点击next后出现下图:

  在这里只需保留默认设置即可。在点击Merge按钮前你可以先Test merge一把,看成功与否,以及merge的详细信息。点击Merge按钮后trunk所做的修改将同步到branch中。

 

10)提交合并后的branch

   

  至此,branch已经完全和trunk同步,branch和trunk的代码相处很融洽,没有任何冲突,如果branch已经开发结束,那是时候将branch合并回trunk了,当然,如果branch还要继续开发,那你将不断地重复6-10这几个步骤。

 

11)将branch合并回trunk

   在/trunk/MyProject上右键(注意是在主线的目录上右键),依次选择"TortoiseSVN" -> "Merge...",在弹出的窗口中,Merge type选择第二项"Reintegrate a branch",这种类型的合并适合在分支开发结束后将所有的改动合并回主线

【温馨提示:下图圈住的第二个,适合主线与分支都做了修改,然后一起合并到主线中】

中文版本图片为:

  点击next后出现如下窗口:

  在这里,"From URL"选择/branches/MyProject,无需选择revision号,Reintegrate会将branch上所有修改合并到 trunk。后面的步骤和上文第9步中的一样,不再啰嗦了。如无意外,branch将成功合并到trunk,你需要做的只是将合并后的trunk赶紧 commit!

 

12)提交合并后的trunk

   over

13)删除branch

   如果你认为你新加的功能已经开发完成了,你可以删除你的分支

   到这里,我已经给你演示完了整个过程,我一身的汗也下来了,我想罢工了,不过最后我们还是看看所有的log信息吧,通过log能发现我们干的所有事情:

  r1-r7正是我上文在干的事情,从Message中你能发现我对trunk和branch都干了什么,另外,在Log Messages窗口的左下角勾选了"Include merged revisions"你还能看到额外的Merge information:

 

   图中灰色的是和merge相关的log,共发生了两次merge,第一次是在r6,在r6中,branch合并了trunk在r4时提交的变化;第二次是在r7,在r7中,trunk合并了branch从r2到r6的所有变化。

终于可以写写总结了:

          branch主要用于新功能的开发

          合并发生在本地working copy,只要你不提交就不会影响到repository

          合并前一定要先update、commit,保证不会out of day,并将本地的修改保存到repository

          branch和trunk并行开发的过程中,要经常同步,将trunk的修改合并到branch,合并时选择"Merge a range of revision"

          branch最后合并回trunk时,merge type选择"Reintegrate a branch"

原文:http://blog.csdn.net/eggcalm/article/details/6606520

14)合并操作关键所在

        分支合并到主干:在主干文件夹右键 -》 svn选择merge -》 merge from 选择分支。

        主干合并到分支:在分支文件夹右键 -》 svn选择merge -》 merge from 选择主干。

一般需要先把主干代码同步到分支,然后把分支所有修改合并到主干,然后再更新上线。

合并过程中,如遇版本冲突:

在“URL to merge form”输入框中选择分支的URL,在“Reverse range to merge”填入版本,可点击【show log】按钮选择需要合并的版本。需要注意的是Merge并非字面上所示的将两个分支归并到一起,而是diff-and-apply的意思,比较两个分支的差异并归并差异。

© 著作权归作者所有

上一篇: Google黑板报
谢思华
粉丝 77
博文 221
码字总数 152858
作品 0
广州
程序员
私信 提问
Windows系统不同SVN版本对比

在subversion官方网站http://subversion.apache.org(前身是:http://subversion.tigris.org)上能查询到所有的操作系统的不同SVN版本,而apache网站本身不存在svn软件的下载,不过有提供所有...

反经
2014/09/03
124
0
Linux 下安装 svn 1.6.x 的问题

红帽 Linux 下安装 SVN 1.6.6 ,客户端可正常使用,包括从别的 svn 库中 checkout 代码。 但是在本机上通过 svnserve -d 启动服务端后,用本地的 svn 命令连接,用户名口令验证过后就出现错误...

红薯
2010/01/21
1K
4
在centos 6.5下安装svn (Subversion)

####一般安装这种工具类的服务器,使用root安装服务,使用功能用户创建目录及启动服务####### 一、安装 yum install subversion 二、配置 1. 建立版本库目录 mkdir –p /home/svn/repos 2. ...

eguotangseng
2018/06/26
0
0
Linux下搭建SVN服务器完全手册

Linux下搭建SVN服务器完全手册 系统环境 RHEL5.4最小化安装(关iptables,关selinux) + ssh + yum 一,安装必须的软件包. yum install subversion (SVN服务器) mysql-server (用于codestriker...

心心
2012/12/04
198
0
SVN Server环境安装配置手册

SVN Server环境安装配置手册 SVN Server环境安装配置手册_百度文库 http://wenku.baidu.com/link?url=923bv1olSkznh1gWd7Gqoxxwj18IHIlTXcEbNiPSLM5H32k93UtQ22rAVppNIlVv89ru4E1cPFe1yESSEk......

james_laughing
2015/07/30
69
0

没有更多内容

加载失败,请刷新页面

加载更多

数据库表与表之间的一对一、一对多、多对多关系

表1 foreign key 表2 多对一:表 1 的多条记录对应表 2 的一条记录 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表2的一条记录 表2的多条记...

Garphy
34分钟前
6
0
MySQL 表崩溃修复

MySQL日志报错 2019-10-19 13:41:51 19916 [ERROR] /usr/local/mysql/bin/mysqld: Table './initread_hss/user_info' is marked as crashed and should be repaired2019-10-19 13:41:51 1......

雁南飞丶
44分钟前
5
0
Error和Exception

1.Error类和Exception类都是继承Throwable类 2.Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问...

大瑞清_liurq
今天
4
0
8086汇编基础 start 程序入口标签的示例

    IDE : Masm for Windows 集成实验环境 2015     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   ......

志成就
今天
4
0
uni app 零基础小白到项目实战2

<template> <scroll-view v-for="(card, index) in list" :key="index"> <view v-for =(item, itemIndex) in card"> {{item.value}}</view> </scroll-view></template> GraceUi va......

达达前端小酒馆
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部