本帖最后由 sincethen 于 2015-12-29 15:28 编辑
windows下SVN编辑
请先安装
windows下SVN编辑
请先安装
TortoiseSVN 小乌龟。百度或是 https://tortoisesvn.net/downloads.html
创建工作目录(检出):
目的:项目文件从远程服务器下载到本地工作目录中。
新建工作目录文件夹,在弹出菜单中选 SVN checkout
checkout directory 选 fully recursive
revision 选 head revision
svn会在目录下创建个.svn目录,记录两项信息:工作文件的基准版本和一个本地副本最后更新的时间戳。不要修改。否则本地的工作拷贝(静态试图)被破坏,无法再进行操作。
2更新工作目录:
目的:对工作目录进行修改前,为保证你的文件是最新的,需要进行更新操作;
3提交工作:
SVN commit,如果文档有更新后,工作目录空白处点击鼠标右键,选择“SVN commit”。会显示更新了哪些内容,库版本是多少。
选择需要更新的文档进行提交。
4文件状态
normal 正常的。 图标1
non-versioned 不在版本中 图标4
conflicted 冲突
modified 修改。 图标2 红色感叹号
其它状态:added deleted versioned 这些是指文件将要进行的操作。
查看状态:
1 在版本控制列表中:可查看文件属性中 subversion选项下的 status。
2 也可svn commit 选项中查看
绿色的对勾
non-versioned 不在版本中 图标4
蓝色问号
conflicted 冲突
图标3
黄色感叹号
modified 修改。 图标2 红色感叹号
其它状态:added deleted versioned 这些是指文件将要进行的操作。
查看状态:
1 在版本控制列表中:可查看文件属性中 subversion选项下的 status。
2 也可svn commit 选项中查看
图标介绍
0
本帖最后由 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 版本库中 ,已有这个文件。也认为 文件纳入版本库管理。
7改名
修改文件名,右键文件,右键“TortoiseSVN” 菜单中 “Rename“。更改文件名后,文件会变为蓝色加号状态。
注意此时,svn commit 提交版本时,一定要在空白处 选择 svn commit ,不要在更改后文件的文件上选择。
在文件状态下可看到两个文件,一个更改前的文件,一个更改后的文件。提交即可。如下图
8SVN文件版本(日志)查看
右键 文件,TortoiseSVN下的”show log”设定好日期后查看历史版本号:
注意如果日期不能选择,请修改SVN服务文件 svnserve.conf 将下列选项设为none
anon-access = none
9SVN还原
右击文件,TortoiseSVN菜单中”Update to reversion…” 在弹出窗口中选择 show log 查看历史版本,选择想要的版本即可。
也可直接在Revision中填写相应的版本号。
10 检查更新:
TortoiseSVN菜单中 Check for modifications 选项。
显示所做的修改有哪些还没有提交,此功能不光能看到对文件的修改变化,所有的变化都能看到,包括增加文件或者目录,删除文件或者目录,移动文件或者目录等,如果你点击了检查版本库,那你还可以看到版本库里的改动,既别人提交了哪些文件的改动,你还没更新到本地,
0
11 解决冲突文件
版本控制和
冲突文件。
使用的软件,一般发布时都标有版本号。比如说我当前使用的有道笔记,这个是发布后版本号。那么类似的在开发环境中,肯定存在很多版本进行测试修改。如何标明控制版本,以及恢复,或是修改某个版本。都需要在版本控制软件下进行操作。
所谓的冲突文件,简单举例:
假如当前测试环境下版本号为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
同时更新18.txt,但不提交。
先提交 svn1下的18.txt,此时再提交s1下的18.txt文件。会提示报错。
update后会在文件夹下产生三个文件。
其中:18.txt.r22是冲突前的版本。18.txt.r23是现有服务器上的版本。18.txt.mine是本机对18.txt.r22版本修改后产生的分支。
18.txt 打开后,会发现多出冲突内容:如下
其中:<<<<<<< .mine 之前是未产生冲突之前的代码:
到====== 是本机修改的代码:
========到>>>>>>>.r23 是别人与我冲突的代码。
解决方法:
1 使用 revert(回滚) 操作: 这表示 用户放弃此次更新的代码:把服务器上的最新代码 r23版本更新到本机。然后重新添加 用户的添加 再提交。
上面文档最后会变为
14sdf
23
2种:右键文件,
TortoiseSVN下的 Editconficts (编辑)选项,经过协商后更改后再提交文档。
红色是冲突代码. theirs 表示服务器最新代码,mine 表示自己修改代码。 merged表示合并 后代码。
点击红色的代码,可选择 use this text block ,表示将该代码作为合并后的代码。
最后保存: save 有两个选项,一个修改状态为modified(修正),另一个仍保持为conflict(冲突)。
save as 有三个选项:left file ,right file ,bottom file.
12 版本上锁。版本库浏览
右键文件 选择
TortoiseSVN--> get lock 。会将文件上锁,此时版本库中此文件处于非编辑状态。
降低冲突解决的复杂度:
1、当文档编辑完成后,尽快提交,频繁的提交/更新可以降低在冲突发生的概率,以及发生时解决冲突的复杂度。
2、在提交时,写上明确的message,方便以后查找用户更新的原因,随着时间的推移,对当初更新的原因有可能会遗忘 。
3、养成良好的使用习惯,使用SVN时每次都是先提交,后更新。每天早上打开后,首先要从版本库获取最新版本。每天下班前必须将已经编辑过的文档都提交到版本库。
编辑回复