SVN版本库 windows下操作

元气小坏坏 提交于 2019-12-09 16:26:15

windows下SVN编辑
请先安装

TortoiseSVN 小乌龟。百度或是 https://tortoisesvn.net/downloads.html


创建工作目录(检出):


目的:项目文件从远程服务器下载到本地工作目录中。


新建工作目录文件夹,在弹出菜单中选 SVN checkout


E66D0FAE4AC046C58BCF50A9A62EC2DC.jpg (12.72 KB, 下载次数: 0)

下载附件

2015-12-29 15:10 上传

710A783B9FBF47079CC44999CA4FD10C.jpg (18.33 KB, 下载次数: 0)

下载附件

2015-12-29 15:10 上传




checkout directory 选 fully recursive


revision 选 head revision


svn会在目录下创建个.svn目录,记录两项信息:工作文件的基准版本和一个本地副本最后更新的时间戳。不要修改。否则本地的工作拷贝(静态试图)被破坏,无法再进行操作。




2更新工作目录:


目的:对工作目录进行修改前,为保证你的文件是最新的,需要进行更新操作;


工作目录空白处点击鼠标右键,选择“SVN Update”。会显示更新了哪些内容,库版本是多少

2.jpg (8.74 KB, 下载次数: 0)

下载附件

2015-12-29 15:12 上传

2a.jpg (8.45 KB, 下载次数: 0)

下载附件

2015-12-29 15:12 上传





3提交工作:


SVN commit,如果文档有更新后,工作目录空白处点击鼠标右键,选择“SVN commit”。会显示更新了哪些内容,库版本是多少。


选择需要更新的文档进行提交。


3.jpg (8.05 KB, 下载次数: 0)

下载附件

2015-12-29 15:13 上传

3a.jpg (8.92 KB, 下载次数: 0)

下载附件

2015-12-29 15:13 上传





4文件状态


normal   正常的。 图标1
绿色的对勾

  non-versioned   不在版本中  图标4
蓝色问号

conflicted    冲突   
图标3
黄色感叹号

modified  修改。  图标2 红色感叹号


其它状态:added deleted versioned 这些是指文件将要进行的操作。
查看状态:
1 在版本控制列表中:可查看文件属性中 subversion选项下的 status。
2 也可svn commit 选项中查看

4.jpg (18.28 KB, 下载次数: 0)

下载附件

2015-12-29 15:14 上传




图标介绍


状态正常,绿色的对勾:

5a.jpg (1.47 KB, 下载次数: 0)

下载附件

2015-12-29 15:15 上传



编辑文件后,红色感叹号:

5b.jpg (1.81 KB, 下载次数: 0)

下载附件

2015-12-29 15:15 上传

  这里表示上次更新工作复本被修改过,且需要提交。

状态冲突,黄色感叹号。

5c.jpg (1.36 KB, 下载次数: 0)

下载附件

2015-12-29 15:15 上传


新建文件,蓝色问号:

5d.jpg (1.43 KB, 下载次数: 0)

下载附件

2015-12-29 15:15 上传

  表示手动新建文件,未加入版本控制中。右键文件,TortoiseSVN ---> add.加入版本控制。

新建文件,蓝色加号:

5e.png (1.38 KB, 下载次数: 0)

下载附件

2015-12-29 15:15 上传

  文件或者目录已经被计划加入到版本控制中。
5  新建文件(add):

新建一个b.txt文件,提交到版本库的方法,2种:

1. 先提到变更列表中,再commit(提交)到配置库中。右键新增文件,SVN菜单执行“Add“操作提交到”变更列表中”,然后执行”SVN Commit”提交到版本库中。

  2. 不提交到变更列表中,而是直接commit配置库中,选择该文件,右键svn菜单执行”SVN Commit”操作。

6 删除(Delete)

要删除文件分两种:

1 版本库中,没有这个文件 ,可直接删除。 意思是,SVN update后,新建的文件,还未入库(未做 svn commit)。

2 版本库中 ,已有这个文件。也认为 文件纳入版本库管理。

   操作方法:右键文件,TortoiseSVN菜单中选 delete 操作。然后在空白处右键菜单执行 SVN commit ,在变更列表中选被删除文件。文件14.txt

6.jpg (15.61 KB, 下载次数: 0)

下载附件

2015-12-29 15:18 上传




7改名

修改文件名,右键文件,右键“TortoiseSVN”  菜单中 “Rename“。更改文件名后,文件会变为蓝色加号状态。

注意此时,svn commit 提交版本时,一定要在空白处 选择 svn commit ,不要在更改后文件的文件上选择。

在文件状态下可看到两个文件,一个更改前的文件,一个更改后的文件。提交即可。如下图


7.jpg (13.4 KB, 下载次数: 0)

下载附件

2015-12-29 15:18 上传


8SVN文件版本(日志)查看


右键 文件,TortoiseSVN下的”show log”设定好日期后查看历史版本号:

注意如果日期不能选择,请修改SVN服务文件 svnserve.conf 将下列选项设为none

anon-access = none

8.png (12.52 KB, 下载次数: 0)

下载附件

2015-12-29 15:18 上传



9SVN还原

右击文件,TortoiseSVN菜单中”Update to reversion…” 在弹出窗口中选择 show log 查看历史版本,选择想要的版本即可。

也可直接在Revision中填写相应的版本号。

9.jpg (11.74 KB, 下载次数: 0)

下载附件

2015-12-29 15:18 上传





10 检查更新:

TortoiseSVN菜单中 Check for modifications  选项。

显示所做的修改有哪些还没有提交,此功能不光能看到对文件的修改变化,所有的变化都能看到,包括增加文件或者目录,删除文件或者目录,移动文件或者目录等,如果你点击了检查版本库,那你还可以看到版本库里的改动,既别人提交了哪些文件的改动,你还没更新到本地,


10.jpg (18.71 KB, 下载次数: 0)

下载附件

2015-12-29 15:18 上传


11 解决冲突文件

版本控制和
冲突文件。

使用的软件,一般发布时都标有版本号。比如说我当前使用的有道笔记,这个是发布后版本号。那么类似的在开发环境中,肯定存在很多版本进行测试修改。如何标明控制版本,以及恢复,或是修改某个版本。都需要在版本控制软件下进行操作。

 

11.jpg (2.77 KB, 下载次数: 0)

下载附件

2015-12-29 15:24 上传



所谓的冲突文件,简单举例:

假如当前测试环境下版本号为100,版本服务器上svn库中有一个文件 1.txt ,A和B 都准备修改他。

首先,两人在各自的TortoiseSVN客户端同时进行更新,各自取得了版本号100的文件 1.txt.

然后,A先修改完毕后,进行了提交,并成功。此时1.txt 版本号变为101.而B仍然在编辑版本号为100的1.txt

最后,当B修改完毕时,进行提交,此时不会成功,并报错 版本冲突。主要原因:B修改的是基于版本号100的1.txt,他提交的不是在当前最新的101版本上作的修改。服务器无法对新的文件更新。


打个比方:一张A4纸,正反两面都可以打印,正面打印完,反面是空白。此时A和B都知道,他们都有打印需求。A先打印反面,此时B不知道。假如,B用这张纸去打印,就会把A打印的覆盖,此时就产生了冲突。

当然这个比方不是太恰当。

以下面为例:s1和svn1都指向同一个库,版本一样。库中有两个文件18.txt和 test212.txt


11a.jpg (19.37 KB, 下载次数: 0)

下载附件

2015-12-29 15:24 上传

11b.jpg (5.76 KB, 下载次数: 0)

下载附件

2015-12-29 15:24 上传


同时更新18.txt,但不提交。

11c.jpg (25.54 KB, 下载次数: 0)

下载附件

2015-12-29 15:24 上传



先提交 svn1下的18.txt,此时再提交s1下的18.txt文件。会提示报错。

11d.jpg (14.18 KB, 下载次数: 0)

下载附件

2015-12-29 15:24 上传



update后会在文件夹下产生三个文件。

11e.jpg (4.25 KB, 下载次数: 0)

下载附件

2015-12-29 15:24 上传



其中:18.txt.r22是冲突前的版本。18.txt.r23是现有服务器上的版本。18.txt.mine是本机对18.txt.r22版本修改后产生的分支。

18.txt 打开后,会发现多出冲突内容:如下

11f.jpg (8.4 KB, 下载次数: 0)

下载附件

2015-12-29 15:24 上传



其中:<<<<<<< .mine 之前是未产生冲突之前的代码:

到====== 是本机修改的代码:

========到>>>>>>>.r23 是别人与我冲突的代码。


解决方法:

1 使用 revert(回滚) 操作: 这表示 用户放弃此次更新的代码:把服务器上的最新代码 r23版本更新到本机。然后重新添加 用户的添加 再提交。

上面文档最后会变为

14sdf

23


2种:右键文件,
TortoiseSVN下的 Editconficts (编辑)选项,经过协商后更改后再提交文档。


11g.jpg (50.14 KB, 下载次数: 0)

下载附件

2015-12-29 15:24 上传


红色是冲突代码. theirs 表示服务器最新代码,mine 表示自己修改代码。 merged表示合并 后代码。

点击红色的代码,可选择 use this text block ,表示将该代码作为合并后的代码。


11h.jpg (8.34 KB, 下载次数: 0)

下载附件

2015-12-29 15:24 上传


最后保存: save 有两个选项,一个修改状态为modified(修正),另一个仍保持为conflict(冲突)。

save as  有三个选项:left file ,right file ,bottom file.

此处保存为:save --> modified。然后通过commit 提交

12c.jpg (1.41 KB, 下载次数: 0)

下载附件

2015-12-29 15:27 上传

即可。18.txt文档的版本会增加到24.

11i.jpg (12.99 KB, 下载次数: 0)

下载附件

2015-12-29 15:24 上传

11j.jpg (12.54 KB, 下载次数: 0)

下载附件

2015-12-29 15:24 上传




12 版本上锁。版本库浏览

右键文件 选择
TortoiseSVN--> get lock 。会将文件上锁,此时版本库中此文件处于非编辑状态。

可通过,

12a.jpg (3.72 KB, 下载次数: 0)

下载附件

2015-12-29 15:24 上传

查看 文件信息及上锁用户。



降低冲突解决的复杂度:


1、当文档编辑完成后,尽快提交,频繁的提交/更新可以降低在冲突发生的概率,以及发生时解决冲突的复杂度。

2、在提交时,写上明确的message,方便以后查找用户更新的原因,随着时间的推移,对当初更新的原因有可能会遗忘 。

3、养成良好的使用习惯,使用SVN时每次都是先提交,后更新。每天早上打开后,首先要从版本库获取最新版本。每天下班前必须将已经编辑过的文档都提交到版本库。




易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!