SVN版本库 windows下操作(三)呕心沥血

回复 收藏
本帖最后由 sincethen 于 2015-12-29 15:28 编辑

windows下SVN编辑
请先安装
TortoiseSVN 小乌龟。百度或是 https://tortoisesvn.net/downloads.html


创建工作目录(检出)

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


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

E66D0FAE4AC046C58BCF50A9A62EC2DC.jpg
710A783B9FBF47079CC44999CA4FD10C.jpg



checkout directory 选 fully recursive

revision 选 head revision

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



2更新工作目录:

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

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




3提交工作:

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

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


3.jpg
3a.jpg




4文件状态

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

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

conflicted    冲突   
图标3
黄色感叹号

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


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



图标介绍

状态正常,绿色的对勾:
5a.jpg


编辑文件后,红色感叹号:
5b.jpg
  这里表示上次更新工作复本被修改过,且需要提交。

状态冲突,黄色感叹号。
5c.jpg

新建文件,蓝色问号:
5d.jpg
  表示手动新建文件,未加入版本控制中。右键文件,TortoiseSVN ---> add.加入版本控制。

新建文件,蓝色加号:
5e.png
  文件或者目录已经被计划加入到版本控制中。

2015-12-29 15:14 举报
已邀请:
0

sincethen

赞同来自:

本帖最后由 sincethen 于 2015-12-29 15:21 编辑

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



7改名

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

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

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


7.jpg

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


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

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

anon-access = none

8.png


9SVN还原

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

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

9.jpg




10 检查更新:

TortoiseSVN菜单中 Check for modifications  选项。

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


10.jpg



0

sincethen

赞同来自:

11 解决冲突文件

版本控制和
冲突文件。

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

11.jpg


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

假如当前测试环境下版本号为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
11b.jpg

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

11c.jpg


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

11d.jpg


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

11e.jpg


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

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

11f.jpg


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

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

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


解决方法:

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

上面文档最后会变为

14sdf

23


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


11g.jpg

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

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


11h.jpg

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

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

此处保存为:save --> modified。然后通过commit 提交
12c.jpg
即可。18.txt文档的版本会增加到24.

11i.jpg
11j.jpg



12 版本上锁。版本库浏览

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

可通过,
12a.jpg
查看 文件信息及上锁用户。



降低冲突解决的复杂度:


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

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

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




0

sincethen

赞同来自:

这么好的东西,居然没人回复。{:4_102:}{:4_102:}
0

alex_shen

赞同来自:

很棒
0

maria

赞同来自:

{:6_148:}这个我会用,天天用的!
0

sincethen

赞同来自:

老师都不给分。哭。。。{:4_102:}{:4_102:}{:4_102:}
0

soul

赞同来自:

好东西,要的就是这样的文档。
0

snake

赞同来自:

学习,收藏

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: